Можно ли запустить cron работа, которая требует потеть командовать?
Нравится:
sudo rm somefile
Я не буду вдаваться в то, насколько это плохая идея; проще говоря, запуск sudo
в crontab требуется, чтобы ваш пароль был сохранен где-то в виде открытого текста.
Это плохая идея.
Ниже приведен предпочтительный метод выполнения административных задач через cron. Поскольку вам на самом деле не нужно писать sudo
в crontab, если вы изменяете crontab root.
Выполните следующую команду:
sudo crontab -e
Это открывает root
это кронтаб. sudo
нет необходимости запускать вашу команду в этом контексте, так как она будет вызвана как root
в любом случае.
Поэтому вы просто добавите следующее в crontab root.
@hourly rm somefile
Теперь, если вы абсолютно хотите быть небезопасным и рисковать своим паролем, выполните следующую команду из вашей собственной crontab и автоматически введите свой пароль по запросу sudo
.
Снова, это не рекомендуется.
В вашей собственной crontab напишите свою команду следующим образом:
@hourly echo "password" | sudo -S rm somefile
Очевидным недостатком здесь является то, что, если кто-либо когда-либо получит доступ к вашей crontab, ваш пароль будет доступен для чтения в виде открытого текста.
Ты не должен этого делать.
Если вы размещаете скрипт из одного из каталогов cron (/etc/cron.*
) тогда вам не нужно использовать sudo, поскольку он работает от имени root.
Если вы используете crontab, то вам нужно будет использовать crontab root. Это позволит запустить его от имени root, а также не потребует sudo.
sudo crontab -e
Выполните следующую команду в терминале
sudo visudo
Добавлена следующая строка в конец файла:
vidyadhar ALL= NOPASSWD: /bin/rm
В приведенном выше примере vidyadhar - это имя пользователя, и оно не будет запрашивать пароль, если вы выполняете команду rm через vidyadhar.
Иногда root необходимо выполнить команду от имени конкретного пользователя системы. Например, в borgbackup обычно root проверяет хранилище с помощью пользователя borg. если задача должна выполняться один раз в день, мы будем использовать /etc/cron.ежедневная папка, вот так:
# cat /etc/cron.daily/borgbackup_check#!/bin/bashsudo -u borg borg check /borgbackup >> /var/log/borgbackup.log
где "-u borg" используется для идентификации пользователя borg, "borg" - это команда borg, а "/borgbackup" - это причал.
@sayemsiam вам не нужно ставить sudo, просто отредактируйте корневую crontab.
Я пытаюсь выполнить sudo, для которого требуется пароль, но как я могу ввести пароль из файла cron
Смотрите этот ответ.
Добро пожаловать, Сайем Сиам, взгляните на ответы на этот вопрос How do I set up a Cron job? - Ask Ubuntu . как я думаю, ваш вопрос уже задавался здесь, на AU