macOS 控制台不直接记录细粒度文件访问日志,需依赖auditd(默认关闭)或通过Unified Logging筛选“Permission denied”等错误、TCC隐私授权日志,或启用auditd进行底层syscall审计。
macos 控制台本身不直接记录“文件访问”行为的详细日志(如哪个进程读取了哪个文件),因为系统默认不启用细粒度的文件访问审计。真正的文件操作权限日志(例如 open、read、write、chmod 等调用)需依赖 macos 的 auditd 审计子系统,而该功能默认关闭,且其日志不通过控制台 app 或 log 命令直接暴露。
不过,你可以通过以下方式间接监控或排查与文件访问权限相关的问题:
一、查看权限拒绝类错误(最常用、最实用)
当程序因权限不足无法读写文件时,内核或守护进程会记录警告或错误,这类日志确实出现在 Unified Logging 中,可用控制台或 log 命令捕获:
-
打开「控制台」→ 选择本机 → 在搜索框输入:
Permission deniedOperation not permitted-
errno:13(即 EACCES) -
errno:1(EPERM,常与 SIP 或沙盒有关)
-
终端中快速筛选最近的权限拒绝事件:
log show --predicate 'eventMessage contains "Permission denied" OR eventMessage contains "Operation not permitted"' --last 1h --info --debug
⚠️ 注意:这类日志通常来自具体进程(如
mdworker,backupd,xcodebuild,node),而非内核直接上报;它们反映的是应用层调用失败的结果,不是底层 syscall 审计。
二、检查沙盒/隐私管控导致的访问拦截
macOS 对文件访问施加了严格的沙盒与隐私限制(如“完全磁盘访问”授权、iCloud 桌面/文档文件夹限制),相关授权变更和拒绝会在日志中标记:
-
在控制台中搜索关键词:
TCCPrivacyAgentNSFileProvidercom.apple.app-sandbox
-
示例终端命令(查最近的 TCC 授权请求):
log show --predicate 'subsystem == "com.apple.TCC" AND eventMessage contains "access"' --last 24h
双击匹配日志,可看到
client(发起进程)、service(如kTCCServiceFilesProvider)、result(granted/denied)等关键字段。
三、启用并查看 auditd 审计日志(仅限高级诊断)
若你确需跟踪真实文件访问(如 openat("/etc/shadow", ...)),需手动启用 macOS 审计子系统:
-
启用审计(需管理员权限,重启后生效):
sudo launchctl load /System/Library/LaunchDaemons/com.apple.auditd.plist sudo audit -e 1
-
审计日志默认存于
/var/audit/(二进制格式),不能用控制台直接打开,需用praudit解析:sudo praudit /var/audit/20260706000000.000000
-
常见审计事件类型包括:
-
AUE_OPEN_W(以写模式打开文件) -
AUE_CHMOD(修改权限) -
AUE_SETFACL(设置 ACL)
-
? 提示:auditd 日志体积大、性能开销高,仅建议在短期调试中启用,日常使用不推荐开启。
四、结合其他线索定位文件权限问题
-
查看某进程是否被授予「完全磁盘访问」:
- 「系统设置」→「隐私与安全性」→「完全磁盘访问」→ 检查目标应用是否勾选
-
检查文件自身权限与 ACL:
ls -le /path/to/file
-
验证是否受 SIP 保护(如
/usr/bin/xxx不允许覆盖):csrutil status # 在恢复模式下运行
不复杂但容易忽略。


















