macos 文件权限管理需三层协同:先在“隐私与安全性”授权app访问指定文件夹,再用访达简介设置用户/群组基础读写及继承,最后通过终端 chmod +a 添加acl实现禁止删除等精细控制,并关闭“允许访客访问”等高危默认选项。

在 macOS 中用权限列表管理复杂文件访问,核心是分层控制:先理清谁该看、谁该改、谁该删,再通过系统设置、访达简介和终端 ACL 三层机制分别落实。单靠图形界面只能做粗粒度分配,真正实现“可写不可删”“仅限某用户读取子目录”这类需求,必须组合使用。
先管住应用对系统文件夹的访问
很多权限问题其实不是文件本身的问题,而是 App 没被授权访问“文稿”“桌面”这类位置。这一步不设好,App 连路径都打不开。
- 打开“系统设置” → “隐私与安全性” → “文件和文件夹”
- 找到目标 App(如 Obsidian、VS Code),勾选它需要访问的具体文件夹,比如只勾“文稿”,不勾“桌面”
- 若 App 不在列表里,点右下角“+”手动添加;若已授权却仍失败,可先取消勾选再重试,或终端执行 tccutil reset All 清空所有授权后重新触发弹窗
再用访达简介精细控制用户级权限
这是最常用也最直观的一层,适合设定具体用户或群组对某个文件夹的基础读写关系,并确保子项继承。
- 右键目标文件夹 → “显示简介” → 展开“共享与权限”
- 点锁图标输入密码解锁,移除不需要的账户(尤其是“everyone”)
- 为关键用户单独添加:比如添加“designer”,设为“读取与写入”;添加“reviewer”,设为“只读”
- 务必点击齿轮图标 → “应用到包含的项目”,否则权限只作用于当前文件夹,不生效于内部文件和子文件夹
最后用终端 ACL 实现图形界面做不到的操作
访达简介里无法禁止删除、无法限制新建但不允许重命名、也无法按条件继承。这些必须靠终端命令 chmod +a 添加 ACL 规则。
- 打开终端,运行:chmod +a "alice allow read,write,append,execute,file_inherit,directory_inherit" /path/to/folder
- 若要禁止某用户删除内容,加一条 deny 规则:chmod +a "alice deny delete_child" /path/to/folder
- 验证是否生效:运行 ls -le /path/to/folder,确认输出中包含对应条目且无 delete 或 writeattr 权限
- 注意:ACL 规则优先级高于传统 Unix 权限,且会随文件复制/移动部分保留,需定期检查
别忘了关掉高危默认开关
很多越权访问源于系统默认开启的宽松选项,必须主动关闭。
- 系统共享设置中,取消勾选“允许访客访问”
- 禁用 SMB 的 NTLM 认证(在“系统设置”→“通用”→“共享”→“文件共享”→“选项”里取消勾选)
- 避免给“staff”或“everyone”直接赋予权限,宁可一个个添加明确用户











