Каким-либо образом проверить и уведомить, если кто-то внес изменения / дополнения в cronjobs для конкретного пользователя на сервере Linux?
Можно ли узнать и о внесенных изменениях?
[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 / журнал / системный журнал. Примеры:
пользователь Алекс отредактировал свой собственный файл 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)
пользователь корень отредактировал файл crontab пользователя Алекс:
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 / журнал / системный журнал:
Jan 3 08:46:01 localhost cron[1146]: (*system*) RELOAD (/etc/crontab)
Этот механизм ведения журнала, вероятно, можно настроить, но он активирован по умолчанию, по крайней мере, в Debian и Ubuntu, и я полагаю, что в большинстве других дистрибутивов тоже.
Их много, но (афаик) ничего особенного в cron. Я бы, наверное, использовал растяжка на сервере и убедитесь, что /var/spool/cron
был подключен к сети.
Ты можешь использовать incron
что похоже на cron
но обрабатывает события файловой системы (изменения файлов / папок) вместо обработки событий по времени. Вы можете следить за папкой /var/spool/cron/crontabs
для изменений и вызвать сценарий, чтобы зарегистрировать их и делать все, что вы хотите.