Я хочу запустить 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