Debian.pro

Блог для пользователей и администраторов Debian


Cron/crontab и несуществующий пользователь.

Краткая мораль — «если удаляете пользователя из системы, проверьте, что от его имени ничего не запускается через cron». Вторая мораль — «ничего не запускайте от тех пользователей, которые приезжают из ldap/nis/whatever».
Ларчик очень простой — если в /etc/crontab или одном из файлов /etc/cron.d/* прописан пользователь, которые не существует в системе, то cron игнорирует этот файл. То есть, у вас 50 строк в crontab, но одна из них — от имени удаленного пользователя, cron игнорирует весь crontab.
То же самое будет происходить, если на момент запуска cron после ребута демон, который приносит пользователей из ldap, ещё не запустился до конца. Или если ldap отвалился во время работы сервера. Или если демон упал.

Всё веселье в том, что cron напишет про это ошибку в лог (/var/log/syslog) ровно один раз, вроде такого:

Apr 26 15:44:01 master cron[14518]: Error: bad username; while reading /etc/cron.d/blah

И такую строчку можно не найти. Впрочем, grep -i cron /var/log/syslog в любой непонятной ситуации с кроном вас спасет ;)
Ну и да, не забывайте, что cron — вполне себе обычный демон и ему можно сказать /etc/init.d/cron restart.


Комментарии (3):

  1. Adamos :

    Третья мораль — если вам нужно что-то запустить из-под такого пользователя, которого может не быть, прописывайте его команды в /var/spool/cron/crontabs/$USER — тогда его отсутствие будет только его проблемой ;)

  2. Влад :

    Хуевая мораль, потом напишу почему.

  3.   :

    Мораль номер 4 — в этом мире существует лишь один Несуществующий пользователь — Инсайдер … и он вернулся чтобы перевернуть этот Мир. 6 Августа .

Написать комментарий