linux文件权限核心为rwx三类,分所有者、所属组、其他人三组;acl扩展支持细粒度授权。rwx字符与数字(421)表示法对应,执行权限对文件指可执行程序,对目录指可进入和访问子项元数据。acl需文件系统支持,用setfacl/getfacl管理,含mask限制与default继承机制。

Linux 文件权限核心是 rwx(读、写、执行)三类基础权限,按用户角色分为所有者(user)、所属组(group)和其他人(others)三组;ACL(访问控制列表)则是对标准权限的扩展,支持为特定用户或组单独授权,解决“一个文件需给多个非主组成员不同权限”的实际需求。
标准 rwx 权限:字符与数字表示法
每个文件/目录的权限用 10 个字符表示,如 -rwxr-xr--:
- 第 1 位表示文件类型(- 普通文件,d 目录,l 符号链接等)
- 第 2–4 位(rwx)是所有者权限:可读(r)、可写(w)、可执行(x)
- 第 5–7 位(r-x)是所属组权限
- 第 8–10 位(r--)是其他人权限
数字表示法(八进制)更常用于 chmod 命令:r=4,w=2,x=1,相加即得每位权限值。例如:
chmod 754 file → 所有者 rwx(4+2+1=7),组 r-x(4+0+1=5),其他 r--(4+0+0=4)
执行权限(x)对文件和目录的意义不同
这是初学者易混淆的关键点:
- 对普通文件:x 表示“可被系统当作程序执行”,不等于“能打开查看”。文本文件即使有 r 权限但无 x,仍可用 cat 查看;若有 x 但无 r,无法读取内容,执行会失败(除非是二进制可执行文件且有对应权限)
- 对目录:x 表示“可进入该目录(cd)”和“可访问其下的子项元数据”(如用 ls -l 查看文件权限、大小等)。没有 x,即使有 r 也无法 ls 列出内容(报 Permission denied);没有 r 但有 x,可 cd 进入并访问已知名字的子文件(如 cat ./known.txt),但不能列出目录内容
ACL:突破传统三组限制的细粒度控制
当标准权限无法满足需求时(例如:让开发组成员 A 有读写、测试组成员 B 只读、运维同事 C 可执行脚本),ACL 提供额外入口:
- 启用前提:文件系统需挂载时支持 ACL(多数现代发行版默认开启,可通过 mount | grep acl 确认)
- 设置命令:setfacl -m u:username:rwx file(为用户添加权限)或 setfacl -m g:groupname:rx dir(为组添加)
- 查看 ACL:getfacl file,输出中除标准权限外,还会显示 # file: file 和 user:username:rwx 等行
- 注意 mask:ACL 实际生效权限受 mask 限制(默认为所有 ACL 条目权限的并集),修改 ACL 后系统可能自动调整 mask;如需显式控制,可用 setfacl -m m::r-x
权限继承与默认 ACL(适用于目录)
普通文件无继承;但目录可设 default ACL,使新创建的子文件/子目录自动获得指定权限:
- 设置:setfacl -d -m u:dev:rwx /shared → 所有在 /shared 下新建的项目,dev 用户默认有 rwx
- 默认 ACL 只影响新创建项,不影响已有内容;且仅对目录有效(-d 参数即表示 default)
- 子目录自身也可设 default ACL,形成多级继承链(但不推荐过深嵌套,维护成本高)










