Я хочу запустить sudo с моим паролем в качестве параметра, чтобы я мог использовать его для сценария. Я старался
sudo -S mypassword execute_command
но безуспешно. Какие-либо предложения?
Я хочу запустить sudo с моим паролем в качестве параметра, чтобы я мог использовать его для сценария. Я старался
sudo -S mypassword execute_command
но безуспешно. Какие-либо предложения?
sudo
правильно настроить, чтобы он не запрашивал пароль для определенной программы / пользователей / группы, чтобы избежать таких грязных взломов.
Ответы:
Ключ -S заставляет sudo читать пароль из STDIN. Это означает, что вы можете сделать
echo mypassword | sudo -S command
передать пароль в sudo
Однако предложения других, которые не включают передачу пароля как часть команды, например, проверка того, является ли пользователь root, вероятно, намного лучше по соображениям безопасности.
sudo chmod -R 0100 myScriptFolder
? Разве это не решило бы проблемы безопасности (при условии, что никто, кроме вас, не использует ваш компьютер как root)?
Вы можете установить s
бит для своего скрипта, чтобы он не требовался sudo
и запускался от имени пользователя root (и вам не нужно было писать свой пароль root в скрипте):
sudo chmod +s myscript
+s
бит setuid. +t
это липкий кусочек.
echo -e "YOURPASSWORD\n" | sudo -S yourcommand
echo -e "YOURPASSWORD\n" | sudo -S "run -x"
. Это говорит sudo: run -x: command not found
. Есть идеи, как это обойти?
Один из вариантов - использовать флаг -A для sudo. Это запускает программу, которая запрашивает пароль. Вместо того, чтобы спрашивать, у вас может быть сценарий, который просто выдаст пароль, чтобы программа могла продолжить.
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi