inotify仅捕获文件系统事件,不记录操作用户,需搭配auditd提取auid实现完整权限审计;它适合毫秒级实时响应,但无法替代auditd的溯源能力。

inotify 本身不记录操作用户,只捕获文件系统事件(如修改、创建、删除),要实现完整权限审计,必须搭配 auditd 提取 auid(原始登录用户 ID)。它适合做毫秒级实时响应,但不能替代审计溯源。
明确 inotify 的能力边界
它监听内核通知,不是“谁改了文件”的记录器。运行 inotifywait 的脚本以 root 身份执行,输出里的 whoami 永远是 root —— 这和实际操作者无关。真正需要回答“谁在什么时候改了 /etc/passwd”,得靠 auditd 打标 + ausearch 解析。
精准监控敏感目录的关键配置
聚焦高风险路径(如 /etc、/root、/var/log),避免泛滥日志:
- 用
-e attrib,close_write,create,delete,moved_to显式指定事件,避开无关项(如access或open) - 加
-r递归监控,但注意/proc/sys/fs/inotify/max_user_watches限制,默认常为 8192;超限会报No space left on device,需调大并持久化:echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches
并在/etc/sysctl.conf中追加fs.inotify.max_user_watches = 524288 - 输出带时间戳和完整路径,便于关联分析:
--timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w%f %e'
补全用户身份:auditd 是不可替代的一环
inotify 告诉你“发生了什么”,auditd 告诉你“谁干的、用什么命令干的”:
- 为
/etc添加规则(写入/etc/audit/rules.d/etc.rules):-w /etc -p wa -k etc_audit(-p wa表示监控写入和属性变更) - 重载规则:
sudo augenrules --load && sudo systemctl restart auditd - 查真实操作者:
sudo ausearch -k etc_audit | aureport -f -i | grep "auid!="
权限加固与日志留存同步落地
监控只是手段,前提得有基础防护:
-
/root必须是700,/etc推荐755,/var/log建议750(属组syslog或adm) - audit 日志默认存于
/var/log/audit/audit.log,需配置轮转(max_log_file、num_logs)并考虑转发至 rsyslog 增强可靠性 - inotifywait 脚本建议用 systemd 服务管理,避免后台进程失控;避免在
while read循环里执行耗时操作(如网络请求),防止事件积压丢失


















