linux文件权限由 ls - l 输出最左 10 字符表示:第 1 位为文件类型,后 9 位每 3 位分别对应所有者、所属组、其他用户的读 (r)、写(w)、执行(x) 权限;数字权限用八进制三位表示,r=4、w=2、x=1;特殊权限含 setuid(s)、setgid(s)、sticky(t)及 SELinux(.)、ACL(+)标记。

Linux 文件权限直接用 ls -l 就能看清,核心是看输出最左边那 10 个字符——前 1 位表示文件类型,后 9 位分三组,每组 3 位分别对应所有者(user)、所属组(group)、其他用户(others)的读(r)、写(w)、执行(x)权限。
一、读懂 ls -l 输出的权限字段
运行 ls -l filename,典型输出如:
-rw-r–r– 1 user group 1024 Jan 1 12:00 file.txt
其中 -rw-r–r– 是权限部分:
- 第 1 位:- 表示普通文件(d= 目录,l= 符号链接,c/b= 字符 / 块设备等)
- 第 2–4 位(rw-):文件所有者权限 → 可读可写,不可执行
- 第 5–7 位(r–):所属组用户权限 → 仅可读
- 第 8–10 位(r–):其他用户权限 → 仅可读
二、数字权限(八进制)与字母权限的对应关系
权限也可用三位八进制数表示,每位对应一组权限(u/g/o),每组按 r=4、w=2、x=1 相加:
- rwx = 4+2+1 = 7
- rw- = 4+2+0 = 6
- r-x = 4+0+1 = 5
- r– = 4+0+0 = 4
例如 chmod 644 file.txt 等价于 chmod u=rw,g=r,o=r file.txt,结果就是上面看到的 -rw-r–r–。
三、快速判断关键权限是否开启
不用死记,抓住三个常用判断点:
- 想编辑文件?看所有者或组是否有 w(或数字权限对应位 ≥2)
- 想执行脚本?对应位置必须有 x(≥1),且文件非目录;目录需 x 才能 cd 进入
- 想查看内容?对应位置有 r(≥4)即可(目录需 r 才能 ls 列出内容)
四、特殊权限和隐藏细节不能漏
除了基础 rwx,还要注意这些常见扩展:
- 权限位出现 s(如 rws 或 r-s):表示 setuid/setgid,执行时临时获得文件所有者 / 所属组身份
- 权限位出现 t(如 rwt):sticky bit,常见于 /tmp,只允许文件所有者删除自己文件
- 权限末尾带 .(如 -rw-r–r–.):SELinux 上下文启用
- 权限末尾带 +(如 -rw-r–r–+):存在扩展属性(如 ACL)
查扩展属性用 getfacl filename,查 SELinux 上下文加 -Z 参数:ls -lZ filename。
基本上就这些。权限本质就是“谁对什么能做什么”,看懂那 10 个字符,再结合 chmod/chown/getfacl 等命令,全部场景都够用了。