一、Linux 文件 ACL 是什么?
传统的 Linux 文件权限只有 ugo(用户/组/其他) 三级控制,粒度不够细。
文件 ACL(Access Control List) 就是给文件 / 目录额外加一套 “访问控制列表”,可以针对单个用户、单个组设置独立的读写执行权限,解决传统权限无法精细化控制的问题。使用 ACL 要求文件系统挂载时开启 acl 功能。
二、核心命令详解
1. getfacl — 查看文件 / 目录的 ACL 权限
作用:查看文件 / 目录的完整权限信息,包括传统权限 + ACL 扩展权限。

- file: hello.sh
- owner: xianwenfeng
- group: xianwenfeng
- user::rw-
- user:alice:r– # ACL给用户 alice 单独设置了只读权限
group::rw-
group:dev:rw- # ACL给组 dev 单独设置了读写权限
mask::rw-# 权限上限
other::r–
2. setfacl — 设置 / 修改文件 / 目录的 ACL 权限
作用:给文件 / 目录添加、修改或删除 ACL 规则。
常用参数
-m:添加 / 修改 ACL 规则(最常用)-x:删除指定的 ACL 规则-b:清空所有 ACL 规则(恢复传统权限)-R:递归设置(目录及所有子文件 / 子目录)-d:设置默认 ACL(目录下新建的文件 / 目录自动继承)
常见用法示例
- 给用户 alice 赋予 test.txt 的读写权限
setfacl -m u:alice:rw- test.txt
- 给组 dev 赋予 test.txt 的只读权限
setfacl -m g:dev:r– test.txt
- 递归给目录 mydir 下所有内容设置 ACL
setfacl -R -m u:bob:rwx mydir/
- 设置目录的默认 ACL(新建文件自动继承)
setfacl -d -m u:charlie:r-x mydir/
- 删除用户 alice 的 ACL 权限
setfacl -x u:alice test.txt
- 清空所有 ACL 规则
setfacl -b test.txt
三、拓展chown / chgrp
1、chown — 修改文件 / 目录的所有者和所属组
运行
基本格式
- sudo chown 新用户名:新组名 文件名
- 示例:把 test.txt 的所有者改成 alice,所属组改成 dev
sudo chown alice:dev test.txt
- 递归修改目录及所有内容的所有者和组
sudo chown -R bob:staff mydir/
2、chgrp — 单独修改文件 / 目录的所属组
运行
基本格式
chgrp 新组名 文件名
- 示例:把 test.txt 的所属组改成 dev
chgrp dev test.txt
- 递归修改目录的所属组
chgrp -R dev mydir/
四、权限为标识
chmod 权限修改
u 属主(所有者)
g 属组
o 其他用户
a 所有用户(u+g+o)
+ 添加权限
– 去掉权限
= 直接设置权限
r 读
w 写
x 执行
r=4 w=2 x=1
常用权限(背下来)
755 → 目录、脚本、程序 rwxr-xr-x
644 → 普通文件、配置文件 rw-r–r–
600 → 私密文件、密钥 rw——-
777 → 所有权限(慎用)
suid-4000 临时变成文件的所有者(对目录不生效,只对文件生效,权限仅对编译好的二进制的可执行文件)
sgid-2000 临时变成文件的所属组
stidcy bit-1000 只有文件所有者或者root可以删除
rws——4700
rwx–s– 2710
rws–s– 4710
评论(0)
暂无评论