核心是用-d参数在目录上设置默认acl,使新文件和子目录自动继承权限;普通文件不支持,默认acl仅对目录生效,且需配合umask与mask确保权限准确落地。

设置默认 ACL 权限的继承,核心是让新创建的文件和子目录自动获得指定权限,这只能通过 目录上的默认 ACL(default ACL) 实现,且必须用 -d 参数。它不改变现有内容,只影响未来新建项。
默认 ACL 只对目录生效
普通文件不能设默认 ACL;只有目录支持 d:u:xxx 或 d:g:xxx 这类规则。执行时若目标不是目录,命令会报错或静默失败。
- 正确示例:
setfacl -m d:u:alice:rwx /shared—— 新建文件自动对 alice 可读写执行,新建子目录也继承该规则 - 错误操作:
setfacl -m d:u:alice:r /file.txt—— 会提示 “Operation not supported”,因为文件不支持默认 ACL
默认 ACL 的实际效果
默认 ACL 不直接赋予新文件完整权限,而是作为“模板”参与权限计算。最终权限还受以下因素影响:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 新建文件的 umask 会过滤掉部分权限(如 umask 002 → 文件默认无 group 写权限)
- ACL mask 会限制非 owner/other 条目的最大有效权限,必要时需手动更新:
setfacl -n -m m::rwx /shared - 子目录会同时继承父目录的默认 ACL 和自己的默认 ACL;普通文件只继承默认 ACL,不带默认 ACL 字段
配合递归实现“现有 + 未来”全覆盖
默认 ACL 只管“以后”,已有内容需单独处理。常见组合操作如下:
- 先给当前所有已有文件/子目录加权限:
setfacl -Rm u:alice:rwx /shared - 再设默认 ACL,确保后续新建项自动带上:
setfacl -dm u:alice:rwx /shared - 验证是否生效:新建一个测试文件
touch /shared/testnew,再运行getfacl /shared/testnew,应看到user:alice:rwx条目
注意符号链接的陷阱
setfacl -d 对符号链接本身无效(默认 ACL 只能设在目录上),且 setfacl -R 默认不进入符号链接指向的目标目录。如果目录里有软链,需确认你操作的是真实目录路径,而非链接名。
例如:ln -s /real/dir mylink,则应执行 setfacl -dm u:alice:rwx /real/dir,而不是 mylink。










