ausearch 是 auditd 的核心检索工具,可按关键词(-k)、用户(-ua/-ui)、文件路径(-f)、时间范围(-ts/-te)及结果状态(-sv)等条件精准过滤 /var/log/audit/audit.log 中的审计事件,并支持 -i 输出可读格式。

Linux 中无法“实时查看”目录权限变更日志——auditd 本身是实时捕获事件的,但日志需主动查询,不存在类似 tail -f 那样的原生流式输出界面。真正可行的是:启用 auditd 监控 + 用 ausearch --start recent -i 快速轮询,或配合 auditctl -w 规则实现近实时感知。
必须先配置 auditd 监控规则
auditd 不会默认记录权限变更。要监控目录(如 /etc/nginx)的权限或属主变动,需显式添加规则:
- 临时生效(重启失效):
sudo auditctl -w /etc/nginx -p wa -k nginx_perm
其中-p wa表示监控写入(write)和属性变更(attribute change),覆盖 chmod、chown、touch -c 等操作 - 永久生效:将规则写入
/etc/audit/rules.d/nginx.rules,再运行sudo augenrules --load - 验证是否加载:
sudo auditctl -l | grep nginx_perm,有输出即成功
用 ausearch 实现“准实时”检索
ausearch 本身不支持 -f 持续监听,但可通过时间窗口高频轮询模拟实时:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 查最近 2 分钟内所有匹配事件:
sudo ausearch -k nginx_perm --start recent -i - 结合 watch 命令每 3 秒刷新一次(适合应急排查):
watch -n 3 'sudo ausearch -k nginx_perm --start recent -i | tail -10' - 关键字段看:
comm(命令名,如 chmod)、exe(真实路径,防伪装)、auid(原始登录用户,比 uid 更可靠)、name(被改权限的路径)
为什么不能直接 tail /var/log/audit/audit.log
原始 audit.log 是二进制编码事件流,直接 cat 或 tail 只能看到大量数字 UID、PID 和十六进制字段,例如:type=SYSCALL msg=audit(1728813600.123:4567): arch=c000003e syscall=90 success=yes ... uid=0 auid=1001 ... comm="chmod"
没有 -i 参数,comm="unknown"、exe="/proc/12345/exe (deleted)" 属常态,等于无效信息。
补充:快速确认变更是否已发生
若审计规则已启用但没查到事件,可交叉验证:
- 检查该目录的 ctime 是否更新:
stat /etc/nginx | grep Change,确认元数据确有变动 - 排查是否通过脚本或 systemd 服务触发(不走 shell,可能无 sudo 日志):
grep -r "chmod\|chown" /etc/systemd/system/ /etc/cron* 2>/dev/null - 注意:
-w /path监控的是目录本身属性,不是其下文件;若要递归监控子项,需额外加规则或改用-S fchmodat,chown,fchownat系统调用级规则

















