macos中必须用“完全磁盘访问权限”才能访问的路径包括:/system/volumes/data/library/preferences、~/library/application support多数子目录、icloud drive根目录及子文件夹、/volumes/下外接设备,以及绝对路径批量操作桌面等目录时。
macos 对应用访问特定系统路径的控制非常严格,不是所有路径都能靠简单勾选就打通。关键在于区分两类权限:一类是面向用户目录的“文件和文件夹”授权,另一类是面向深层系统路径的“完全磁盘访问权限”。前者管桌面、文稿、下载等常用位置;后者才真正触及 /system/volumes/data/library/preferences、icloud drive 根目录、外接硬盘及 sip 保护下的路径。
哪些路径必须用“完全磁盘访问权限”
以下路径无法通过普通“文件和文件夹”授权打开,必须启用“完全磁盘访问权限”并手动添加应用:
-
/System/Volumes/Data/Library/Preferences(系统级偏好设置存储区) -
~/Library/Application Support中多数子目录(如某些开发工具需写入插件配置) - iCloud Drive 的根目录及其任意子文件夹(不只是“iCloud云盘”列表项)
- 挂载在
/Volumes/下的外接硬盘或镜像卷宗 - 桌面、文档、下载等目录若被脚本或 CLI 工具以绝对路径方式批量操作,也常触发该权限需求
如何正确授予并验证该权限
它不会自动弹窗请求,也不能靠 sudo 临时绕过。必须按步骤手动完成:
- 打开“系统设置 → 隐私与安全性 → 完全磁盘访问权限”
- 点击右下角“+”,在访达中定位到应用(例如 Terminal 在“应用程序 > 实用工具”)
- 确保复选框已勾选,然后完全退出该应用(包括菜单栏图标和后台进程)
- Apple 芯片 Mac 还需执行:
sudo killall -u $(whoami) Terminal(以 Terminal 为例),再重启应用 - 验证是否生效:在 Terminal 中运行
ls /System/Volumes/Data/Library/Preferences,不报 Operation not permitted 即成功
别混淆“文件和文件夹”与“完全磁盘访问”
很多人误以为勾选了“下载”“文稿”就等于能访问所有路径——其实不然:
- “文件和文件夹”只覆盖预设的几个用户目录,且对子目录深度有限制(比如不能穿透到
~/Library/Containers/xxx/Data) - “完全磁盘访问权限”是独立开关,不依赖前者,也不包含前者;两者需分别配置
- 某些 App(如 VS Code 插件、Homebrew CLI 工具)可能根本不会出现在“文件和文件夹”列表里,但会出现在“完全磁盘访问权限”中
- 网页应用(PWA)和快捷指令触发的自动化流程,走的是另一套权限机制,不在此列
权限异常时的快速排查方向
如果已授权却仍访问失败,优先检查这几个点:
- 应用是否彻底退出?macOS 会缓存授权状态,残留进程会导致新权限不加载
- Apple 芯片设备是否执行了
sudo killall命令?这是 M 系列芯片的强制要求 - 目标路径是否被 ACL 或继承权限阻断?可用
ls -le /path查看访问控制列表 - 是否在沙盒化环境(如 Xcode 模拟器、App Store 版 App)中运行?这类环境有额外限制,完全磁盘访问权限无效
- 日志可查:
log show --predicate 'subsystem == "com.apple.TCC"' --last 1h,看是否有拒绝记录











