有没有办法通过用户 ID 过滤发送到 rsyslog 的消息?假设我想确保只有 root 发送的消息才会记录到单独的文件中(基于 rsyslog 规则),而非特权用户(例如使用记录器实用程序)生成的消息将被丢弃。
答案1
是的,至少对于来自 SystemD 日志的消息可以。
load="imuxsock"
将行更改/etc/rsyslog.conf
为:
module(load="imuxsock" SysSock.Annotate="on" SysSock.ParseTrusted="on")
添加到 Syslog 配置:
if $!uid == '0' then /var/log/root.log
if $!uid == '33' then /var/log/www-data.log
我已经学会了这一点这里。
选修的:如果您想添加“经典” syslog Unix 套接字作为输入(不是 TCP),请在“模块”行下方添加以下内容:
input(type="imuxsock" Socket="/dev/rsyslog" Annotate="on" ParseTrusted="on")
这$!uid
也将适用于记录到该系统日志套接字的消息。
答案2
现在无法测试这一点,但是 /etc/rsyslog.conf 文件中的这一行不应该起作用吗?
root.* -/var/log/root_messages.log