使用 setfacl -b 可彻底清除文件或目录的所有扩展 acl 条目,仅保留基础权限;执行前可用 getfacl 或 ls -l + 判断是否存在 acl,清除后 getfacl 输出仅含 user::、group::、other:: 三行且 ls -l 末尾 + 消失。

直接用 setfacl -b 命令即可清除文件或目录上所有扩展的 ACL 条目,只保留基础权限(即 owner/group/other 的 rwx 位)。
确认当前是否有 ACL 权限
运行 getfacl 文件名 或 getfacl 目录名。如果输出中包含类似 user:alice:r-x、group:dev:r-- 或 mask::rwx 这样的行(而非仅 user::rwx、group::r-x、other::---),说明已设置了 ACL。
另外,ls -l 显示权限末尾带 +(如 -rw-rw-r--+ 或 drwxr-xr-x+ )也是存在 ACL 的直观标志。
执行清除操作
setfacl -b 是最常用且安全的方式:
- 清除单个文件:
setfacl -b filename - 清除单个目录(不递归):
setfacl -b dirname - 递归清除目录及其所有子项:
setfacl -bR dirname
执行后,getfacl 输出将不再显示任何自定义用户或组条目,mask 行也会消失,仅剩基础三段权限和默认的 user::、group::、other::。
注意几个常见误区
-
setfacl -k只删默认 ACL(仅对目录有效),不会动普通 ACL 条目 —— 它不是清空全部 ACL 的命令 -
chmod不会清除 ACL,只影响基础权限位和 mask 值;ACL 仍存在,但部分权限可能因 mask 限制而失效 -
setfacl -x是逐条删除指定条目(如setfacl -x u:alice file),不适合批量清空 - 清除 ACL 后,文件权限位(
ls -l显示内容)通常不变,但末尾的+会消失
验证是否清除干净
再次运行 getfacl 文件名,输出应满足以下三点:
- 没有
user:xxx:、group:xxx:、other:(非基础行)等自定义条目 - 没有
mask::行 -
ls -l结果末尾不再有+











