macOS 对敏感文件访问的强制隔离由内核级沙盒机制实现:默认拒绝一切越界访问,仅放行 entitlements 明确声明的路径;完全磁盘访问权限按进程授钥,仅开放公共区域,不穿透沙盒;敏感窗口需通过黑名单或独立账户隔离;加密映像实现物理不可见。macOS 对敏感文件访问的强制隔离不是靠用户自觉或事后拦截,而是从系统启动那一刻起就嵌入内核与框架层的硬性约束。它不依赖应用“守规矩”,而是让越界行为在发生前就被截断——连错误都明确告诉你:“这不是权限不够,是根本不被允许”。
沙盒机制:默认拒绝一切,只放行声明项
每个 macos 应用安装时自动获得一个专属容器目录(如 ~/library/containers/com.example.app),其他路径一律不可见。即使应用有 root 权限,尝试读取 /etc/hosts 或 /users/otheruser/documents 也会收到 eperm 错误,这是 xnu 内核沙盒策略引擎主动拒绝,而非传统文件权限(acl)不足。
开发者必须在 entitlements 文件中精确声明所需能力,例如:
- com.apple.security.files.user-selected.read-write:仅允许用户手动选取的文件
- com.apple.security.assets.pictures.read-write:仅限照片图库
- 禁用 temporary-exception 类临时权限——这类配置既易被绕过,也通不过 Mac App Store 审核
完全磁盘访问权限:按进程授钥,非“全局通行证”
「系统设置 → 隐私与安全性 → 完全磁盘访问权限」不是给应用开后门,而是为特定进程发放一把“钥匙”。这把钥匙只解锁公共区域(如 ~/Desktop、~/Documents、iCloud Drive),不穿透沙盒壁垒——即便 Terminal 获得该权限,也无法直接读取另一应用的容器目录。
启用后需彻底退出再重启应用;Apple 芯片 Mac 还需执行:
sudo killall -u $(whoami) Terminal
否则策略不会即时生效。
敏感窗口与切换行为的可视隔离
Alt-tab 类工具默认显示所有窗口缩略图,包括密码管理器、加密笔记等界面——这属于侧信道泄露,无需代码漏洞即可暴露信息。
- 使用支持黑名单的切换工具(如 alt-tab-macos),将敏感 App(如 1Password、Obsidian 加密库)加入隐藏列表
- 启用 macOS 原生“快速用户切换”或为高敏任务创建独立用户账户,从根本上切断窗口共享
- 避免在主账户下长期运行含敏感 session 的工具(如 Telegram Desktop、浏览器带登录态的 Profile)
加密映像:让数据物理不可见
最彻底的隔离不是“限制访问”,而是“让数据无法被发现”。用磁盘工具创建加密 APFS 映像封装敏感资料,挂载需输入密码,卸载即不可见——没有密码,连 ls /Volumes 都看不到它。
- 适合存放 session 文件(如 Telegram tdata、浏览器 Cookie 目录、SSH agent socket)
- 映像挂载后仍受沙盒与权限策略约束,形成双重防护
- 配合 FileVault 全盘加密,实现静态+运行时双层保护


















