Назад | Перейти на главную страницу

Доступ к скрипту без пароля для Visudo (Visudo + Cron)

Я хочу, чтобы мой пользователь 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. Но тогда почему бы просто не поместить сценарий в rootcrontab?

В противном случае, если скрипт содержит строку sudo /path/to/mycommand arguments, затем положите dave ALL=NOPASSWD: /path/to/mycommand arguments в файле sudoers. Это будет применяться независимо от того, где бежит Дэйв mycommand из.