用 setfacl 与 getfacl 为用户单独授权

使用 POSIX ACL 给单个用户授予读/执行权限,而不改变文件的属主、属组以及其他人依赖的 755 权限位。

Linux权限setfacl 访问控制ACL 权限中风险
执行 setfacl -m u:deploy:rx /var/www/app 即可让 deploy 用户获得读+执行权限;执行 getfacl /var/www/app 可查看结果 ACL。

01命令

命令
$ setfacl -m u:deploy:rx /var/www/app
getfacl /var/www/app

02作用说明

访问控制列表扩展了经典的属主/属组/其他人模型:setfacl -m 添加一条给指定用户(u:name)或组(g:name)授权的条目,getfacl 则打印完整生效的 ACL。它优雅地解决了“用户 X 需要访问权限,但改属组又会破坏其他东西”的常见难题。修改后 ls -l 的权限位末尾会出现 + 号,表示存在扩展条目。

03风险

风险中风险
使用条件acl package (sudo apt install acl); filesystem must be mounted with the acl option
!注意: 文件系统未以 acl 选项挂载时 ACL 会被静默忽略;rsync/tar 需加相应参数(--acls)才能保留 ACL,复制后请用 getfacl 核实。

04撤销

撤销
$ setfacl -x u:deploy /var/www/app

05来源

  • setfacl(1) — Linux manual page
    man7.org · technical · 2026-09-17
    依据: setfacl man page: '-m, --modify=acl Modify the ACL of the file(s)' with u:uid:perms entry syntax.
  • Debian Wiki: ACL
    Debian · vendor-doc · 2026-09-17
    依据: Documents installing the acl package and the default-ACL feature for new files in a directory.

最后验证: 2026-09-17 · 分类: 安全与隐私

06相关方案