ACL是标准权限的补充,为特定用户或组单独授权,不改变属主和组关系;需文件系统启用acl挂载选项,通过setfacl设置、getfacl查看、-b清空,mask决定实际生效权限上限。

ACL不是用来取代chmod的,而是当标准用户-组-其他权限不够用时,给特定人加一道“专属门禁”。它不改文件属主、不调组关系,直接为某个用户或组单独开权限。
确认文件系统已启用ACL支持
ACL功能依赖文件系统挂载参数,不是装了命令就能用。静默失败是常见问题——设了权限却看不到效果,往往卡在这一步。
- 运行mount | grep "$(df . | tail -1 | awk '{print $1}')",检查输出中是否含acl(如rw,relatime,acl)
- 若无,临时启用:sudo mount -o remount,acl /path(例如/或/home)
- 永久生效需编辑/etc/fstab,在对应分区的挂载选项字段末尾加,acl(注意逗号后不空格),再重新挂载
为单个用户快速设置ACL权限
不需要把用户拉进组,也不用开放“其他人”权限,直接指定即可。对目录加x才允许进入,建议用大写X更安全(只对目录或已有执行位的文件生效)。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 让alice可读写文件:setfacl -m u:alice:rw filename
- 让bob能进入并浏览目录:setfacl -m u:bob:rX dirname/
- 递归设置整个项目目录:setfacl -Rm u:devteam:rwx /opt/app/
设置默认ACL让新文件自动继承权限
普通ACL只作用于当前项;要让后续新建的文件、子目录也带权限,必须设默认ACL。它只对目录有效,且不影响已有内容。
- 设置默认规则:setfacl -d -m u:charlie:rwX,g:editors:rX /shared/docs/
- 之后在/shared/docs/里touch new.txt,charlie就默认有读写权
- 新建子目录会同时继承普通ACL和默认ACL,但已有子目录需单独再设一次-d
查看、调试与清理ACL
权限没生效?先看mask——它是所有命名用户/组权限的“天花板”,设了rwx但mask::r--,实际就只能读。
- 查完整权限:getfacl path,重点关注user:、group:和三行
- 删某条规则:setfacl -x u:alice file
- 清空所有扩展ACL(保留基础ugo):setfacl -b file
- 重算mask(推荐):setfacl --recompute-mask file,避免手动设错

















