事情本身不复杂,线索都在日志里。CentOS 7 上手工 auditctl -w 加的规则重启后消失,/etc/audit/rules.d/ 里明明有文件,augenrules –load 报 Error sending add rule data request (Operation not permitted)。

排查方向其实有限,先把可能性排一排。rules.d 里文件属主不是 root,augenrules 拼出来的文件加载被拒。也可能是文件里写的是 auditctl 命令格式,augenrules 只认规则行。

少数情况下是同一 watch 重复添加,第二次 -w 直接报错导致后续规则一起失败。

上来先看拼接与检查结果

augenrules --check; augenrules --load

修正属主与权限

chown root:root /etc/audit/rules.d/*.rules && chmod 640 /etc/audit/rules.d/*.rules

接着按规则行格式重写

printf '%s\n' '-w /etc/passwd -p wa -k passwd_changes' > /etc/audit/rules.d/passwd.rules

剩下的就是重启并核对条数

systemctl restart auditd && auditctl -l | wc -l

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

这次没动代码,只在配置和运行环境上找原因。

改完先别撤,确认这几项。重启后 auditctl -l 的条数与 rules 文件里的规则数一致,ausearch -k passwd_changes 能查到事件,augenrules –check 无报错。

容易忽略的是,audit 重启会丢全部动态规则,持久化只能靠 rules.d;先用 -D 清空再 -R 加载,能避免重复规则的加载失败。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189