setfacl -k 专用于安全清除目录的默认acl,不删除普通acl条目;而 -b 会清空所有扩展acl,-d -x 需指定具体规则且前提是有默认acl存在,操作繁琐易误删。

用 setfacl -k 命令即可,它专用于清除默认 ACL,不影响当前已设置的用户、组等普通 ACL 条目。
为什么不能用 -b 或 -d -x?
-b 会删除所有扩展 ACL(包括普通和默认),只剩基础权限(owner/group/others);
-d -x 是删除某一条默认规则,但前提是目录上已有默认 ACL,且你得知道具体要删哪条——操作繁琐还容易误删。
正确操作步骤
- 确认目录当前有默认 ACL:getfacl /path/to/dir,输出中含 default: 开头的行即表示存在
- 执行清除:setfacl -k /path/to/dir
- 验证结果:getfacl /path/to/dir,default 相关行应已消失,但 user::、group::、user:alice:rwx 等普通 ACL 仍保留
补充说明
setfacl -k 是 --remove-default 的简写,语义明确、行为安全。它不会改动文件权限位,也不影响已存在的子目录或文件的 ACL 设置,只作用于该目录自身的默认 ACL 标记。











