执行 setfacl -b filename 可一键清除所有扩展 ACL 规则,仅保留 user::、group::、other:: 三行基础权限,移除 mask 及所有 user:xxx:、group:yyy: 条目,权限显示末尾 + 号消失,后续访问完全由 chmod 设置的 UGO 权限控制。

直接用 setfacl -b 即可一键清除所有扩展 ACL 规则,让文件回归标准的用户/组/其他(UGO)权限模型。
确认文件当前有ACL规则
执行 getfacl filename 查看完整权限结构;若输出中除 user::、group::、other:: 外还存在 user:xxx:、group:yyy: 等条目,说明已启用扩展 ACL。也可快速判断:ls -l filename 中权限字符串末尾带 +(如 -rw-rw-r--+ ),即表示存在额外 ACL 规则。
执行-b选项彻底清空扩展ACL
setfacl -b filename 会移除所有非基础的 ACL 条目,仅保留传统三元权限(所有者、所属组、其他用户)。操作后:
- 文件权限显示不再带
+号 -
getfacl输出只剩基础三行(user::、group::、other::)及可能的 mask 行(该 mask 将自动失效,不再起作用) - 后续访问控制完全由
chmod设置的 ugo 权限决定
注意mask权限的自动退场
ACL 启用时,mask 控制实际生效的最高权限上限。执行 -b 后,mask 条目被一并删除,不再参与权限计算。此时若之前依赖 mask 限制了某用户的有效权限,清除后其实际权限可能意外提升——例如原 ACL 中 user:alice:rw- 受 mask r-- 限制只能读,-b 后若所有者权限为 rw-,alice 就可能通过组或其他权限获得写入能力。因此建议:
- 操作前先运行
getfacl filename备份当前状态 - 清理后用
ls -l和getfacl二次验证是否已回归纯 UGO 模式 - 必要时配合
chmod显式收紧基础权限,避免隐性放权
批量处理多个文件或目录
对目录及其全部内容递归清除 ACL:
-
setfacl -bR /path/to/dir—— 清除目录下所有文件和子目录的扩展 ACL - 如需同时清除默认 ACL(仅目录有),加
-k:setfacl -b -kR /path/to/dir


















