设置默认acl需对目录使用setfacl -d命令,仅影响后续新建子项;默认acl只适用于目录,权限推荐rwx(大写x),子目录可递归继承,文件仅继承权限位不带default标记,umask仍参与最终权限计算。

设置默认 ACL 实现自动继承,关键在于对目录使用 setfacl -d 命令。它不改变现有文件,只影响后续新建的子项。
只对目录生效,且必须加 -d 参数
默认 ACL(default ACL)只能设在目录上,对普通文件执行会报错。命令格式为:
setfacl -d -m u:用户名:权限 /path/to/dirsetfacl -d -m g:组名:权限 /path/to/dir- 支持同时设置多个规则,例如:
setfacl -d -m u:alice:rwX,g:devs:rwx /shared
权限建议用 rwX(大写 X)
大写 X 是更安全的选择:对目录自动加 x,对普通文件仅在已有执行位时才加 x,避免脚本或配置文件被意外执行。
- 比如
rwX应用于新创建的目录 → 得到rwx - 应用于新创建的普通文件 → 得到
rw-(除非原文件本身有 x)
继承行为有区别:子目录可继续传,文件不能
新建对象如何继承,默认 ACL 的逻辑是:
- 新子目录:完整继承父目录的默认 ACL,并自动将其设为自身的默认 ACL(具备向下再继承能力)
- 新普通文件:只继承权限位(如 rw- 或 rwx),但不带 default 标记,因此无法作为继承源
- umask 仍起作用:最终权限 = 默认 ACL 权限 & (~umask),例如默认给 rw-rw-rw-、umask=002 → 实际为 rw-rw-r--
查看和清理默认 ACL
确认是否已设置、及时维护很重要:
- 查看:
getfacl /path/to/dir,输出中含default:开头的行即表示已配置 - 删某条:
setfacl -d -x u:alice /path/to/dir - 清空所有默认规则:
setfacl -d -b /path/to/dir(注意-d不可省,否则会连常规 ACL 一起删)











