最准方式是用-a always,exit配合auid=1001过滤关键系统调用;需启用auditd,添加b64/b32双架构规则监控openat、open、read、write、execve,永久写入/etc/audit/rules.d/并augenrules加载,再用ausearch/aureport按-k标签查日志。

要监控特定 UID(比如普通用户 1001)的所有文件访问和执行行为,不能靠 -w 监控固定路径,而必须使用系统调用级规则,结合 auid(审计用户 ID)字段过滤。auid 在用户登录时即被内核设定,全程不变,比 uid 更可靠——即使进程 su 切换身份,auid 仍保留原始登录用户标识。
核心逻辑是:捕获该 UID 发起的 openat、open、execve 等关键系统调用,并限定架构(b64 或 b32),避免漏报或误报。
✅ 确认 auditd 已启用且运行正常
运行以下命令验证:
systemctl is-active auditd # 应返回 active auditctl -s | grep enabled # enabled=1 表示审计已开启
若未运行,先启用:
sudo systemctl enable --now auditd
✅ 添加针对指定 UID 的系统调用审计规则
假设目标 UID 是 1001,需同时覆盖 64 位和 32 位系统调用(多数现代系统只需 b64,但双架构更稳妥):
# 监控该 UID 所有 open/openat/read/write/execve 等关键文件操作(64位) sudo auditctl -a always,exit -F arch=b64 -S open,openat,read,write,execve -F auid=1001 -k uid_1001_access # (可选)补充 32 位兼容规则(如系统运行 i386 程序或容器) sudo auditctl -a always,exit -F arch=b32 -S open,openat,read,write,execve -F auid=1001 -k uid_1001_access
? 说明:
-a always,exit表示在系统调用退出时记录,确保能捕获返回值(如success=yes/no)-S后列出的系统调用覆盖了绝大多数文件读写与程序执行行为-F auid=1001是关键过滤条件,精准锁定该用户的全部审计会话-k uid_1001_access提供统一检索标签,便于后续日志提取
⚠️ 注意:不要用 -F uid=1001,因为子进程可能变更 uid(如 sudo、su),但 auid 始终代表初始登录者。
✅ 永久生效:写入规则文件并重载
临时规则重启即失效。要长期生效,需固化到 /etc/audit/rules.d/:
sudo tee /etc/audit/rules.d/20-uid-1001.rules <p>然后加载规则: </p><pre class="brush:bash;toolbar:false;">sudo augenrules --load
验证是否加载成功:
sudo auditctl -l | grep uid_1001_access
✅ 查看和分析该 UID 的审计日志
规则生效后,所有匹配行为将写入 /var/log/audit/audit.log。常用查询方式:
-
查最近 10 分钟内该 UID 的所有审计事件(含可读时间、命令、路径):
sudo ausearch -k uid_1001_access --start recent --input-logs -i
-
只看执行类行为(execve)及其调用命令名:
sudo ausearch -k uid_1001_access -m execve -i | grep "comm="
-
生成结构化文件访问报告:
sudo aureport -f -k uid_1001_access -i
? 提示:日志中重点关注字段:
auid:确认是目标用户(如 1001)uid:实际执行进程的 UID(可能为 root)comm:触发事件的命令名(如bash,curl,vim)exe:对应可执行文件绝对路径cwd:当前工作目录path:被访问的文件路径(出现在openat/open事件中)success=yes/no:判断操作是否成功
⚠️ 注意事项与优化建议
- 高频监控
read/write可能产生海量日志(如文本编辑器频繁读写临时文件),生产环境建议优先聚焦execve+openat(覆盖绝大多数敏感动作),必要时再加read/write并配合-F path=/sensitive/dir细化范围。 - 若需排除某个命令(如
ls),可在规则中加-F comm!=ls,但慎用,易遗漏绕过。 - 确保
/var/log/audit/有足够磁盘空间,并检查/etc/audit/auditd.conf中max_log_file和num_logs设置,防止日志轮转丢失数据。 - 不建议对 UID
0(root)全量监控,除非明确需要;应优先审计特权提升路径(如sudo,su,setuid二进制)。
不复杂但容易忽略。











