Я хочу, чтобы мой пользователь dave мог запускать сценарий bash без ввода пароля, чтобы сценарий мог работать с crontab? Для всех других действий я бы хотел, чтобы от этого пользователя требовалось вводить пароль (по умолчанию). Я знаю, что это можно сделать с помощью visudo, но я не могу заставить его работать. Может быть, неправильный синтаксис?
Моя запись в Visudo:
dave ALL=(ALL) ALL
dave ALL=NOPASSWD: /home/dave/thescript.sh
Это работает в командной строке, я могу выполнить это без ввода пароля. Но cron возвращается [sudo] password for dave:
Мой crontab для пользователя dave:
0 * * * * /home/dave/thescript.sh
Большое спасибо,
Росс
Ваша запись выше позволяет Дэйву запустить /home/dave/thescript.sh
через sudo
без ввода пароля.
Однако вы не работаете thescript.sh
через sudo
.
Вам нужно будет добавить аналогичную запись для команды, которую сценарий пытается запустить через sudo, в ваш файл sudoers, например.
dave ALL=NOPASSWD: /path/to/special/command
В sudoers
вход dave ALL=NOPASSWD: /home/dave/thescript.sh
позволь Дэйву выполнить sudo /home/dave/thescript.sh
без ввода пароля. Здесь ничего не говорится об использовании sudo
из этого сценария; sudo
не заботится о том, какой скрипт вызвал его.
Если весь сценарий должен запускаться от имени пользователя root, вызовите его с помощью sudo /home/dave/thescript.sh
в crontab. Но тогда почему бы просто не поместить сценарий в root
crontab?
В противном случае, если скрипт содержит строку sudo /path/to/mycommand arguments
, затем положите dave ALL=NOPASSWD: /path/to/mycommand arguments
в файле sudoers. Это будет применяться независимо от того, где бежит Дэйв mycommand
из.