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

Действительно ли нужен конкретный SUDO в командной строке crontab?

Я использую CENTOS 7 с включенным SELinux. На сервере есть учетная запись root и 1 учетная запись пользователя. В общем, я использую root-доступ и все делаю.

Сегодня я пытаюсь настроить задание cron, которое запускается каждую ночь, с помощью следующей команды

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
========== Job 1 - Clear the access log ===========
55 23 * * * root truncate -s 0 /var/log/phpweb-datasync-access.log >/dev/null 2>&1
# ======== Job 2 Delete temp download photo from php web site===================
57 23 * * * root find /app/photo_store/ -mtime +1 -exec rm -f {} \; >/dev/null 2>&1
# ======== Job 3 Restart httpd Server ===========
59 23 * * * root sudo service httpd restart >/dev/null 2>&1

Все работает, но мне интересно, действительно ли мне нужно sudo в Job 3? В случае, если я пытаюсь запустить «service httpd restart» в терминале, у него нет проблем с разрешениями, но я видел пример задания cron на каком-то учебном сайте также имеет «sudo».

Из справочная страница для crontab (5):

Jobs in /etc/cron.d/

    The jobs in cron.d are system jobs, which are used usually for more than one
    user. That's the reason why is name of the user needed. MAILTO on the first 
    line is optional.


EXAMPLE FOR JOB IN /etc/cron.d/job

    #login as root
    #create job with preferred editor (e.g. vim)
    MAILTO=root
    * * * * * root touch /tmp/file

В вашем файле вы определяете пользователя root, поэтому команда уже будет выполняться с повышенными привилегиями.

В sudo не нужно.

Если вы запускаете его из crontab из root, что похоже на вас, то нет, вам не нужно указывать sudo в cronjob. Он будет запускаться из оболочки root с соответствующими правами и разрешениями, и вы также уже указали root в самом cronjob.

Фактически, если вы запустите задание из crontab -e так как root то вам даже не нужно указывать root как пользователь. С помощью sudo не причинит вреда, но в этом нет необходимости.