直接用 setfacl -m u:用户名:权限 设置用户ACL权限,无需更改所有者或所属组,也不影响他人权限;需确保文件系统挂载含acl选项,ACL工具预装或按系统安装,权限用三位符号表示,目录默认ACL需加d:前缀。

直接用 setfacl -m u:用户名:权限 命令就行,不需要改文件所有者或所属组,也不影响其他人权限。
确认前提条件
确保系统已启用 ACL 支持:现代主流发行版(如 CentOS 7+、Ubuntu 20.04+)默认开启,但需验证文件系统挂载时含 acl 选项。可运行 mount | grep "$(df . | tail -1 | awk '{print $1}')" 查看是否含 acl。若无,需在 /etc/fstab 中为对应分区添加 acl 参数并重新挂载。
ACL 工具通常预装;如缺失,按系统安装:
- Debian/Ubuntu:
sudo apt install acl - RHEL/CentOS/Fedora:
sudo yum install acl或sudo dnf install acl
给用户设置 ACL 权限
使用 -m(modify)选项添加或更新权限,语法固定为 u:用户名:权限,权限用三位符号表示(如 rwx、rw-、r-x):
- 给用户
alice对/shared/report.txt设置读写执行:setfacl -m u:alice:rwx /shared/report.txt - 只读权限(注意:对目录需含
x才能进入):setfacl -m u:bob:r-x /shared/docs - 仅写权限(慎用,通常配合读权限):
setfacl -m u:carol:--w /shared/log.txt
执行后,ls -l 显示权限末尾会多一个 +,例如 -rw-r--r--+ ,表明 ACL 已生效。
验证和管理 ACL 条目
用 getfacl 查看完整权限结构,确认新增条目是否出现:
-
getfacl /shared/report.txt→ 输出中应有类似user:alice:rwx的行 - 删除某用户的 ACL:
setfacl -x u:alice /shared/report.txt - 清空全部 ACL:
setfacl -b /shared/report.txt
注意:ACL 权限受 mask 限制,实际生效权限不会超过 mask 值。如需扩大有效范围,可显式设置:setfacl -m m:rwx /shared/report.txt。
让新文件自动继承权限(仅目录)
对目录设置默认 ACL(d: 前缀),子文件/子目录创建时自动获得该权限:
setfacl -m d:u:alice:rwx /shared/teamdir- 后续在
/shared/teamdir中新建的文件,默认对alice具备rwx(实际仍受 mask 约束)
默认 ACL 不影响已有文件,只作用于新建项。


















