要通过终端命令一键开启macOS全盘敏感文件读写审计,需启用OpenBSM审计子系统并配置fr/fw等标志,执行sudo auditctl -s检查状态、sed修改/etc/security/audit_control、sudo audit -n && sudo killall -HUP auditd重启服务,日志存于/var/audit/并可用praudit解析。
要通过终端命令一键开启 macos 对全盘敏感文件的读写审计,核心是启用 openbsm 审计子系统,并配置它持续监控关键文件访问行为(如 fr 文件读、fw 文件写)。这不是一个“单条命令即生效”的开关,而是需完成三步:启用审计服务 → 扩展审计标志 → 重启审计守护进程。以下为可直接执行的完整流程:
✅ 启用并配置 OpenBSM 实时文件读写审计
-
确认审计服务当前状态
先检查审计是否已运行:sudo auditctl -s | grep "enabled"
若输出
enabled 0,说明未启用;若报错command not found,则需先安装 Xcode 命令行工具(xcode-select --install)。 -
修改审计类标志,加入文件读写监控
编辑/etc/security/audit_control,将flags行扩展为包含fr,fw,fa,fc,fd(读、写、属性访问、创建、删除):sudo sed -i '' 's/^flags:.*/flags:lo,aa,fr,fw,fa,fc,fd/' /etc/security/audit_control
-
强制重载审计配置并启动守护进程
一条命令完成重启(无需重启系统):sudo audit -n && sudo killall -HUP auditd 2>/dev/null || sudo launchctl kickstart -k system/com.apple.auditd
⚠️ 注意:该操作会立即开始记录所有匹配事件到
/var/audit/下的二进制日志文件(如20260506091500.not_terminated),后续可用praudit解析:sudo praudit /var/audit/* | grep -E "(path|fr|fw)" | head -20
? 审计效果验证(快速确认是否生效)
运行一个测试读写操作,然后查日志:
# 创建测试文件并读取
echo "test" > ~/audit_test.txt
cat ~/audit_test.txt
# 查最近1分钟内含文件路径的审计记录
sudo praudit /var/audit/* 2>/dev/null | awk '/path:/ {p=$0; next} /fr|fw/ && p {print p; p=""}' | head -5若看到类似 path:/Users/xxx/audit_test.txt 且紧跟 fr 或 fw 类型,说明审计已实时捕获。
? 补充说明:这不是“全盘扫描”,而是“实时访问捕获”
- OpenBSM 不主动扫描磁盘,只记录内核触发的 open/read/write/unlink 等系统调用;
- 审计粒度是进程级+路径级,能明确看到哪个 PID 在何时访问了哪个文件;
- 默认不记录文件内容,仅记录元数据(路径、UID、时间、事件类型),隐私友好;
- 日志默认按大小轮转(
filesz:2M),长期运行建议配合auditreduce或脚本定期归档解析。
不复杂但容易忽略的是:必须确保 /var/audit/ 有足够空间,且 auditd 进程处于活跃状态(ps aux | grep auditd)。


















