ACL继承规则的核心是通过默认ACL使新文件和子目录自动获得父目录预设权限,需启用文件系统acl选项、用-d参数设置default ACL,并注意目录与文件继承差异及掩码限制。

目录ACL继承规则的核心是让新创建的文件和子目录自动获得父目录预设的访问控制权限,避免手动逐个设置带来的遗漏风险。关键在于正确配置默认ACL(default ACL),它只对目录生效,并影响其内部新建项。
确认系统支持ACL并启用扩展属性
Linux系统需确保文件系统挂载时启用了acl选项,常见于ext4/xfs等格式。可通过mount | grep "$(df . | tail -1 | awk '{print $1}')检查是否含acl。若未启用,需修改/etc/fstab并在对应行添加acl参数后重新挂载。同时确认getfacl和setfacl命令可用。
为目录设置默认ACL(default ACL)
仅设置普通ACL(如setfacl -m u:alice:rwx dir)不会影响新文件;必须用-d参数设置默认ACL:
-
setfacl -d -m u:alice:rwx /shared/project—— 新建文件/目录将自动赋予alice读写执行权 -
setfacl -d -m g:devgroup:rx /shared/project—— 组成员对新内容默认可读可执行 -
setfacl -d -m o::--- /shared/project—— 禁止其他用户访问新创建项(强推荐)
注意:默认ACL只存在于目录上,且仅作用于后续新建项,不影响已有内容。
理解默认ACL对不同类型新建项的影响
新建文件和目录继承方式不同,受umask和默认ACL共同约束:
- 新建目录会完整继承默认ACL中的所有条目(包括用户、组、掩码、其他)
- 新建文件不会继承执行权限(x),即使默认ACL中设置了;例如
u:alice:rwx在新文件上实际生效为r-w- - ACL掩码(mask)始终限制实际生效权限上限,建议用
setfacl -d -m m::rwx确保默认条目不被截断
验证与持续维护建议
用getfacl /shared/project查看输出中default:开头的行,确认默认规则已生效。定期检查关键目录是否仍保留默认ACL(复制、移动或某些脚本可能清除它)。生产环境中建议将ACL设置纳入部署脚本或配置管理工具(如Ansible的file模块配合acl参数),避免人为疏漏。

















