Я хотів би запустити 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