Есть ли способ фильтровать сообщения, отправляемые в rsyslog, по идентификатору пользователя? Скажем, я хочу убедиться, что только сообщения, отправленные root, должны регистрироваться в отдельном файле (на основе правил rsyslog), а сообщения, созданные непривилегированными пользователями (например, с использованием утилиты logger), будут отброшены.
Да, по крайней мере, для сообщений, поступающих из журнала SystemD.
Изменить load="imuxsock"
линия в /etc/rsyslog.conf
кому:
module(load="imuxsock" SysSock.Annotate="on" SysSock.ParseTrusted="on")
Добавить в конфигурацию системного журнала:
if $!uid == '0' then /var/log/root.log
if $!uid == '33' then /var/log/www-data.log
Я узнал это Вот.
По желанию: если вы хотите добавить «классический» сокет системного журнала Unix в качестве входа (не TCP), добавьте это под строкой «модуль»:
input(type="imuxsock" Socket="/dev/rsyslog" Annotate="on" ParseTrusted="on")
В $!uid
также будет работать для сообщений, записываемых в этот сокет системного журнала.
Не могу проверить это прямо сейчас, но разве не должна работать такая строка в файле /etc/rsyslog.conf?
root.* -/var/log/root_messages.log