Как запустить задание cron с помощью команды sudo

Можно ли запустить cron работа, которая требует потеть командовать?

Нравится:

 sudo rm somefile

Я не буду вдаваться в то, насколько это плохая идея; проще говоря, запуск sudoв crontab требуется, чтобы ваш пароль был сохранен где-то в виде открытого текста.

Это плохая идея.


Ниже приведен предпочтительный метод выполнения административных задач через cron. Поскольку вам на самом деле не нужно писать sudo в crontab, если вы изменяете crontab root.

Используйте 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