Проверка на наличие изменений в cronjobs

Любой способ проверить и уведомить, если кто-то внес изменение / дополнение в cronjobs для конкретного пользователя на сервере Linux?

Можно ли узнать о внесенных изменениях?

4 ответа

[user@user-ld ~]$ sudo tail /var/log/cron | grep RELOAD
Jan  3 00:19:01 user-ld crond[3074]: (user) RELOAD (/var/spool/cron/user)

grep для 'RELOAD'в журнале cron (/var/log/cron). Так что, если кто-то отредактирует / добавит задание cron, вы можете увидеть вышеупомянутые вещи в журнале cron.

Напишите скрипт мониторинга для этого файла журнала и с помощью которого отправляете оповещение на ваш электронный идентификатор.

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

#!/bin/bash
echo 'YOURPASSWORD_SUDO' | sudo -S crontab -l -u user > current_status_`date +"%m%d%y%s"`
diff <(cat `ls -1tr current_status_*| tail -1`) <(cat `ls -1tr current_status_* | tail -2 | head -1`)
if [[ $? == 0 ]] ; then 
    echo "no change in cron"
else
    echo "cron changed"
fi

Если кто-то редактирует свой файл crontab для каждого пользователя через crontab -e запись в журнале записывается в / var / log / syslog. Примеры:

Пользователь alex отредактировал свой собственный файл crontab:

Jan  3 08:42:47 localhost crontab[4278]: (alex) BEGIN EDIT (alex)
Jan  3 08:42:50 localhost crontab[4278]: (alex) END EDIT (alex)

Пользователь root отредактировал файл crontab пользователя alex:

Jan  3 08:49:06 localhost crontab[4557]: (root) BEGIN EDIT (alex)
Jan  3 08:49:07 localhost crontab[4557]: (root) END EDIT (alex)

Если crontab изменяется внешним редактором, то следующая запись журнала появляется в / var / log / syslog:

Jan  3 08:46:01 localhost cron[1146]: (*system*) RELOAD (/etc/crontab)

Этот механизм ведения журнала, вероятно, настраивается, но активируется по умолчанию, по крайней мере, в Debian и Ubuntu, и я полагаю, что большинство других дистрибутивов тоже.

Их много, но (afaik) ничего не свойственно cron. Я бы, вероятно, использовал tripwire на сервере и убедился, что /var/spool/cron был перепутан.

Ты можешь использовать incron который похож на cron но обрабатывает события файловой системы (изменения в файлах / папках) вместо обработки событий на основе времени. Вы можете контролировать папку /var/spool/cron/crontabs для изменений и вызвать сценарий, чтобы записать их и делать все, что вы хотите.

Другие вопросы по тегам