Ответы:
Я не буду вдаваться в подробности, насколько это плохая идея; Проще говоря, запуск sudo
в crontab требует, чтобы ваш пароль хранился где-нибудь в виде открытого текста.
Это плохая идея.
Ниже приведен предпочтительный метод запуска административных задач через cron. Поскольку вам не нужно писать sudo
в crontab, если вы изменяете crontab root.
Запустите следующую команду:
sudo crontab -e
Это открывает root
crontab. sudo
Нет необходимости запускать вашу команду в этом контексте, так как она будет вызываться как и в root
любом случае.
Таким образом, вы просто добавили бы следующее в crontab root.
@hourly rm somefile
Теперь, если вы абсолютно хотите быть небезопасными и рисковать своим паролем, следующие команды запустят вашу команду из вашего собственного crontab и автоматически введут ваш пароль при появлении соответствующего запроса sudo
.
Опять же, это не рекомендуется .
В вашем собственном crontab напишите вашу команду так:
@hourly echo "password" | sudo -S rm somefile
Очевидным недостатком здесь является то, что, если кто-нибудь когда-нибудь получит доступ к вашему crontab, ваш пароль будет доступен для чтения в виде открытого текста.
Ты не должен этого делать.
root
пользовательский crontab вместо общесистемного crontab /etc/crontab
?
sudoers
файле, например, группы sudo без требования пароля.
Если вы помещаете скрипт из одной из директорий cron ( /etc/cron.*
), вам не нужно использовать sudo, так как он запускается от имени root.
Если вы используете crontab, то вы захотите использовать crontab root. Это запустит его как root, а также не нужно sudo.
sudo crontab -e
Запустите следующую команду в терминале
sudo visudo
Добавил следующую строку в конец файла:
vidyadhar ALL= NOPASSWD: /bin/rm
В приведенном выше примере vidyadhar является именем пользователя, и он не будет запрашивать пароль, если вы запускаете команду rm через vidyadhar.
sudo rm -rf 'slash'
( не запускать эту команду ), запускаемая этим пользователем, не требует пароля ... Я не знаю, это кажется небезопасным, нет?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
, будет более безопасным.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, что было бы намного безопаснее.