文件存在acl标记需先检查权限字符串末尾是否有“+”号;有则运行ls -le查看规则,识别allow/deny及list、add_file、delete等细粒度权限;含file_inherit或directory_inherit标志才递归生效。

确认文件是否存在ACL标记
Mac中ACL不会自动显示在访达简介里,必须先通过终端命令判断是否启用——若权限字符串末尾没有【+】符号,后续所有ACL检查都无意义。
打开终端,将目标文件拖入窗口,输入ls -l 后回车。
观察输出第一列最右侧字符:如为drwxr-xr-x+或-rw-r--r--+,说明已启用ACL;若为-rw-r--r--(无+号),则该文件未配置ACL,无需继续执行后续步骤。
查看完整ACL规则列表
只有确认存在【+】标记后,才需运行ACL专用命令。这一步会列出所有显式添加的访问控制条目,包括用户、群组、继承标志及具体权限位。
在终端中输入:ls -le ,再将文件拖入,回车执行。
输出中每行以0: user:xxx allow或1: group:staff deny开头的部分即为ACL规则;其中allow表示授予权限,deny表示明确拒绝,比POSIX基础权限优先级更高。
注意:若执行后仅显示文件基础信息而无任何0:1:开头的行,说明虽然有+号标记,但当前ACL为空——这是合法状态,系统保留了ACL容器但尚未写入规则。
识别ACL中的关键权限字段
ACL规则不是简单“读/写”二选一,而是由多个细粒度权限组合而成,例如list,add_file,delete,writeattr。理解这些字段才能判断实际行为边界。
常见权限字段含义:
• list:能否浏览目录内容(对应POSIX的r)
• add_file:能否在目录中新建文件(对应POSIX的w)
• delete:能否删除该文件或目录内项目(独立于w权限)
• writeattr:能否修改文件扩展属性(如quarantine)
• readacl和writeacl:能否读取或修改ACL本身——普通用户默认无此权,必须用sudo。
若某条规则含delete但不含add_file,表示可删不可建;若含add_file但不含delete,就是“可写入但不可删除”的真实实现机制。
检查ACL是否递归应用到子项
ACL本身不自动继承,必须显式设置file_inherit或directory_inherit标志,否则只作用于当前文件或目录自身。
第一步:运行ls -le 查看当前对象的ACL行。
第二步:找到含file_inherit或directory_inherit的那条规则(通常出现在末尾括号内,如(file_inherit,directory_inherit))。
第三步:若无此类标志,说明子文件/子目录完全不受该ACL约束——它们沿用父目录的POSIX权限或自身独立ACL,必须单独设置。
这一步不能跳过:很多用户误以为给父目录加了ACL就万事大吉,结果发现子文件仍被拒绝访问,根源就在此。











