用 ls -le 查看完整 ACL:输出末尾带 + 表示启用 ACL,后续多行显示 allow/deny、权限名(如 list/read/write/delete_child)及继承标志(file_inherit 等),ACL 优先级高于基础权限,inherited 条目需逐级向上查父目录确认源头。
mac 查看文件的详细访问控制列表(acl),不能只靠访达“显示简介”里展开的“共享与权限”区域——那只能看到简化的用户/群组权限摘要。要看到完整、原始、带操作类型和继承标志的 acl 条目,必须用终端命令。
用 ls -le 查看完整 ACL
这是最直接有效的方法,会列出所有显式设置的 ACL 规则,包括允许或拒绝的具体权限、应用范围和继承标记:
- 打开“终端”(应用程序 → 实用工具)
- 输入:ls -le 文件路径(例如:
ls -le ~/Documents/report.pdf) - 若看到输出中某行末尾带 +(如
drwxr-xr-x+),说明该文件/目录已启用 ACL,ls -le的后续多行就是具体条目 - 每条 ACL 行格式类似:
0: group:staff allow list,readattr,readextattr,readsecurity,其中allow或deny是关键动作,后面是具体权限名
识别 ACL 中的关键权限字段
macOS ACL 权限名比基础 rwx 更细粒度,常见且实用的有:
- list:相当于目录的“读取”——能打开并浏览内容(对应 POSIX 的 r)
-
read:读取文件内容或目录属性(含
readattr,readextattr) -
write:写入文件内容或创建新文件(含
writeattr,writeextattr) - delete 和 delete_child:分别控制删除自身和删除子项,常用于“可写不可删”场景
- file_inherit / directory_inherit:表示该规则是否自动应用到新建的文件或子目录
区分 ACL 和基础权限(POSIX)
ACL 是叠加在传统三段权限(所有者/组/其他)之上的增强层,优先级更高。即使基础权限设为 rwxr-xr-x,只要 ACL 中有一条 deny delete,用户就无法删除。
- 先用 ls -l 看基础权限字符串,注意末尾是否有 @(扩展属性)或 +(ACL 已启用)
- 有 + 就必须配合 ls -le 才算真正看清了全部访问控制逻辑
- ACL 规则不会被“应用到嵌入项目”一键覆盖,每条都是独立生效的
查看隐藏的 inherited 条目
有些 ACL 条目标有 inherited 字样,说明它来自父目录的继承规则。想确认源头,需对父目录执行同样命令:
- 例如目标是
/Users/me/Projects/file.txt,发现 ACL 含 inherited,则进入/Users/me/Projects - 运行 ls -le .(点代表当前目录),查看该目录自身的 ACL 是否设置了
file_inherit或directory_inherit - 若父目录也继承自更上层,可逐级向上查,直到找到显式添加的那条规则

















