macos磁盘读写权限需四层协同:①系统级完全磁盘访问权限控应用资格;②卷级挂载选项(ro/noexec)固行为边界;③目录级acl/chmod实现账户隔离;④加密映像使数据物理不可见。
macos 的磁盘读写权限不能靠“一个开关”统一管理,而是需要分层施控:系统级管应用能不能碰、卷级管挂载时的行为、目录级管谁能在里面操作、加密层则让数据本身不可见。四层缺一不可,单用某一层容易被绕过。
系统级:控制应用对整个卷的访问资格
这是第一道防线,由「完全磁盘访问权限」决定。它不针对某个硬盘,而是以应用为单位授权——比如 Terminal、Carbon Copy Cloner 或 Obsidian,必须手动添加并启用,才能读写外接卷、iCloud Drive、桌面等受保护路径。
- 打开「系统设置 → 隐私与安全性 → 完全磁盘访问权限」,点击「+」添加目标应用(注意是实际进程名,如 Terminal.app)
- 勾选后必须彻底退出该应用(包括后台进程),再重新启动
- M 系列芯片 Mac 还需终端执行 sudo killall -u $(whoami) Terminal 刷新策略缓存
- 即使有 root 权限,未授权的应用也无法绕过此限制访问敏感路径
卷级:挂载时固化行为边界
对 NTFS、exFAT、网络共享等非原生格式卷,挂载参数直接决定其可读性与可执行性。比事后 chmod 更可靠,因为权限在挂载瞬间就生效。
- 先卸载:diskutil unmount /Volumes/MyDrive
- 重挂载加限制:sudo mount -u -o ro,noexec,nosuid /dev/disk2s1 /Volumes/MyDrive
- ro 表示只读,noexec 禁止运行程序,nosuid 忽略 setuid 位防提权
- 如需长期生效,可将配置写入 /etc/fstab(需先创建该文件并设权限为 644)
目录级:细化到账户或组的进出权限
当卷是 APFS 或 Mac OS 扩展格式且已本地挂载(如 /Volumes/WorkBackup),可用 ACL 和 chmod 实现用户级隔离,核心是切断「everyone」通路。
- 访达中右键卷图标 →「显示简介」→ 展开「共享与权限」
- 点锁图标解锁,把「everyone」设为「无访问权」
- 仅保留你自己的账户为「读取与写入」,再点齿轮 →「应用到封闭的项目」
- 终端加固命令:sudo chmod -R 700 /Volumes/WorkBackup(仅所有者可读写执行)
- 如需按组控制,可用 chmod -R +a "group:project-team:allow read,write,execute" /shared/project
加密层:让数据物理不可见
最彻底的读写限制不是“不准读”,而是“根本看不到”。加密磁盘映像把访问控制从操作系统层转移到密码验证层——没密码,连挂载都做不到。
- 打开「磁盘工具」→「文件 → 新建映像 → 映像来自文件夹」
- 选择目标文件夹,格式选「APFS(加密)」或「Mac OS 扩展(Journaled,加密)」
- 设置强密码,保存为 .dmg;之后双击挂载需输入密码,卸载后内容完全不可见
- 支持 AES-128 加密,且不依赖用户账户——他人登录同一台 Mac,没密码也无法挂载











