要对特定uid用户的所有文件访问和操作做全审计,必须从系统调用层切入,用auditctl -a配合-f uid=xxx过滤open、write、unlink等关键动作,并打上可检索的key标签;需先确认uid、检查auditd状态及内核审计启用情况,再添加临时规则并固化到/etc/audit/rules.d/中,最后用ausearch、aureport等工具查看筛选日志。

要对特定 UID 用户的所有文件访问和操作做全审计,不能只监控几个目录或文件,必须从系统调用层切入,按用户身份精准捕获其发起的各类文件行为。核心是用 auditctl -a 配合 -F uid=xxx 过滤,覆盖 open、write、unlink、rename、chmod 等关键动作,并打上可检索的 key 标签。
确认目标 UID 并检查 auditd 状态
先查清你要监控的用户的 UID:
- 运行
id -u username(例如id -u alice),得到类似1002的数字 - 确认 auditd 正在运行:
systemctl is-active auditd应返回active - 检查内核审计是否启用:
auditctl -s | grep enabled中enabled=1表示就绪
添加完整文件行为审计规则(临时)
以下命令适用于 x86_64 系统,为 UID 1002 添加全路径文件操作监控:
auditctl -a always,exit -F arch=b64 -F uid=1002 -S open,openat,creat -k user_1002_openauditctl -a always,exit -F arch=b64 -F uid=1002 -S write,writev,pwrite64 -k user_1002_writeauditctl -a always,exit -F arch=b64 -F uid=1002 -S unlink,unlinkat,mkdir,mkdirat,rmdir -k user_1002_fs_modauditctl -a always,exit -F arch=b64 -F uid=1002 -S rename,renameat -k user_1002_renameauditctl -a always,exit -F arch=b64 -F uid=1002 -S chmod,fchmod,chown,fchown,setxattr,removexattr -k user_1002_attr
每条规则末尾的 -k 标签建议包含 UID 和语义,方便后续用 ausearch -k user_1002_open 快速定位。
固化为永久规则避免重启失效
临时规则重启后会丢失,需写入配置文件:
- 新建规则文件:
sudo vim /etc/audit/rules.d/99-user-1002.rules - 把上面五条命令去掉
auditctl前缀,直接写入(每行一条,不带引号) - 添加注释说明用途,例如:
# Track all file writes by UID 1002 - 执行
sudo augenrules --load加载新规则 - 验证是否生效:
sudo auditctl -l | grep 1002应能看到全部规则
查看与筛选审计日志
日志默认存于 /var/log/audit/audit.log,推荐用工具解析:
- 按 key 查所有操作:
sudo ausearch -k user_1002_open - 查该用户全部行为:
sudo ausearch -ui 1002 - 查最近一小时的操作:
sudo ausearch -ts recent -ui 1002 - 生成简明报告:
sudo aureport -f -ui 1002 --start recent
重点关注字段包括 uid(实际执行者)、auid(登录会话初始 UID)、comm(命令名)、exe(可执行路径)、syscall(系统调用名)和 success(是否成功)。











