Задача: каждые несколько секунд выполняется команда через sudo, и /var/log/messages забивается строками вроде:
Aug 24 00:16:41 golf sudo: ksu : TTY=unknown ; PWD=/home/ksu ; USER=root ; COMMAND=/usr/sbin/hddtemp /dev/sda -q Aug 24 00:16:41 golf sudo: pam_unix(sudo:session): session opened for user root by (uid=1000)
Решение:
Первая строчка убирается добавлением в /etc/sudoers:
Defaults !syslog
Вторая строка фильтруется через syslog-ng:
# vim /etc/syslog-ng/syslog-ng.conf
# Определяем destination для логов
destination authlog { file("/var/log/auth.log"); };
# Фильтр логов событий авторизации
filter f_authpriv { facility(auth, authpriv); };
# Фильтр логов с приоритетом info
filter f_info { level(info); };
# Отрицание предыдущих фильтров
filter f_main { not level(info) or not facility(auth, authpriv); };
# Логи событий авторизации с info в отдельный файл
log { source(src); filter(f_authpriv); filter(f_info); destination(authlog); };
# Всё остальное — в /var/log/messages и консоль
log { source(src); filter(f_main); destination(messages); };
log { source(src); filter(f_main); destination(console_all); };
Или без изменения /etc/sudoers:
# Фильтр, отбрасывающий все сообщения от sudo
filter f_main { not program("sudo"); };
log { source(src); filter(f_main); destination(messages); };
log { source(src); filter(f_main); destination(console_all); };
Примеры фильтрации других демонов:
destination messages { file("/var/log/messages"); };
destination console_all { file("/dev/tty12"); };
destination cron { file("/var/log/cron.log"); };
destination pptp { file("/var/log/pptp.log"); };
destination sshd { file("/var/log/sshd.log"); };
filter f_cron { program("cron"); };
filter f_pptp { program("pptp") or program("pppd"); };
filter f_sshd { program("sshd"); };
filter f_main { not program("cron") and not program("pppd")
and not program("pptp") and not program("sshd"); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_pptp); destination(pptp); };
log { source(src); filter(f_sshd); destination(sshd); };
log { source(src); filter(f_main); destination(messages); };
log { source(src); destination(console_all); };