在linux中添加文件监控规则需用sudo auditctl -w /path -p rwxa -k key,-w指定绝对路径,-p设读写执行属性事件,-k设检索关键字;重启失效,持久化需写入/etc/audit/rules.d/并运行augenrules --load。

在 Linux 中添加一条监控指定文件的 Audit 规则,核心是使用 auditctl 命令配合 -w(watch)选项。这条规则会由内核 audit 子系统实时捕获对该文件的访问、修改等操作,并记录到 /var/log/audit/audit.log(或通过 ausearch/audispd 处理)。
使用 auditctl 添加文件监控规则
语法简洁直接:
sudo auditctl -w /path/to/file -p rwxa -k my_file_watch
- -w:指定要监控的文件或目录路径(必须是绝对路径)
-
-p:定义监控的权限事件类型,可组合使用:
-
r:读取(如
cat,open(O_RDONLY)) -
w:写入(如
echo >>,vim保存) -
x:执行(如
./script.sh) -
a:属性变更(如
chmod,chown,chattr)
-
r:读取(如
-
-k:设置自定义关键字(key),用于后续快速检索日志,比如:
ausearch -k my_file_watch
✅ 示例:监控 /etc/shadow 的所有读写和属性修改行为:
sudo auditctl -w /etc/shadow -p rwa -k etc_shadow_access
让规则开机持久生效
auditctl 添加的规则是临时的,重启后失效。要永久生效,需写入 audit 规则配置文件:
- 编辑
/etc/audit/rules.d/下的规则文件(推荐新建,如99-my-file.rules) - 写入与
auditctl等效的规则行,但用-a或-w的完整格式(-w在 rules.d 中同样支持) - 重载规则:
sudo augenrules --load(自动合并并加载所有.rules文件)
? 注意:不要直接改 /etc/audit/audit.rules,它会被 augenrules 覆盖。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
✅ 示例(写入 /etc/audit/rules.d/99-sensitive-file.rules):
-w /etc/passwd -p wa -k passwd_mod
验证和排查常见问题
添加后建议立即验证是否生效:
- 触发一次目标操作(如
ls /path/to/file或chmod 600 /path/to/file) - 查日志:
sudo ausearch -k my_file_watch | aureport -f -i(人性化显示文件相关事件) - 确认规则已加载:
sudo auditctl -l | grep "my_file_watch"
⚠️ 常见失败原因:
- 路径不是绝对路径(
-w不接受相对路径或通配符) - 文件不存在或路径拼写错误(audit 不报错,但不会触发事件)
- auditd 服务未运行:
sudo systemctl status auditd,必要时启动:sudo systemctl enable --now auditd - 权限不足:普通用户无法添加规则,必须 root 或具备
audit_writecapability
补充:监控目录 vs 监控文件
-w 对目录也有效,但注意:
- 监控目录时,会捕获该目录下**所有文件和子目录**的匹配事件(递归生效)
- 若只想监控某个特定文件,务必指定完整文件路径,而非其所在目录
- 监控大目录(如
/home)可能带来性能开销,慎用-p rwx
✅ 安全实践建议:优先使用最小权限原则,例如仅监控关键配置文件的 -p wa,避免无意义的 -p r 造成日志爆炸。










