默认ACL仅对目录生效,用于新创建的文件和子目录继承权限,不作用于已有内容或普通文件;设置需用setfacl -d,验证用getfacl查看default:行,清理需配合-d与-b选项。

Linux 默认 ACL 权限不是自动生效的,必须显式为目录设置“默认ACL”(default ACL),新创建的文件和子目录才会按规则继承。它不作用于已有内容,也不适用于普通文件本身。
只对目录设置,默认ACL才有效
默认ACL只能设在目录上,对普通文件执行 setfacl -d 会报错。这是因为继承机制只由目录驱动——只有目录能成为“权限源头”。
- 正确:sudo setfacl -d -m g:devteam:rwx /shared
- 错误:sudo setfacl -d -m u:alice:rx file.txt(会提示 Operation not supported)
设置命令与常见组合
使用 setfacl -d -m 添加默认规则;若还需立即赋予当前目录相同权限,再补一条不带 -d 的命令。
- 让组 devteam 对新建内容有完整权限:setfacl -d -m g:devteam:rwx /shared
- 同时给当前目录加同级 ACL(非默认):setfacl -m g:devteam:rwx /shared
- 设多个默认规则(如用户+组):setfacl -d -m u:alice:rx,g:devteam:rwx /shared
继承行为有区别
新对象继承方式取决于类型:
- 新建子目录:完整继承父目录的默认ACL,并自动将其设为自身的默认ACL(可继续向下传)
- 新建普通文件:只继承权限位(如 rwx),但不带 default 标记,因此不能作为继承源
- 实际权限还受 umask 限制:例如默认给 rw-rw-rw-,umask=002 → 最终为 rw-rw-r--
验证和清理方法
用 getfacl 查看是否生效;清除时注意 -d 和 -b 的配合。
- 检查:getfacl /shared → 看是否有以 default: 开头的行
- 删某条默认规则:setfacl -d -x g:devteam /shared
- 清空所有默认ACL(保留常规ACL):setfacl -d -b /shared
- 彻底清空所有ACL(含默认+常规):setfacl -b /shared


















