发布于2026-08-19 阅读(0)
扫一扫,手机访问
在使用ls -l命令输出的结果中,其10位权限字符串里,第1位用于表明文件类型,像“-”代表普通文件,“d”则表示目录。而后边的9位权限字符,每3位为一组,它们依次对应的是所有者、所属组以及其他用户对于该文件或目录的读(r)、写(w)、执行(x)权限。

ls -l 看清 10 位权限字符串直接运行 ls -l filename 命令,输出的第一列就是你需要的权限位,总共10个字符。例如 -rw-r--r-- ,其中第1位表示文件类型,后面9位分为三组,每组3个字符,分别对应所有者(u)、所属组(g)、其他用户(o)的 r(读)、w(写)、x(执行)状态。
常见陷阱:
- 是普通文件,d 是目录,l 是软链接,和权限无关.):它表示 SELinux 上下文启用,不是权限位,但会影响实际访问行为? 或空白:说明当前用户无权读取该 inode 的权限字段(比如被 ACL 或强制访问控制拦截),此时 ls -l 显示不完整stat 输出里找八进制和符号权限的原始值stat 不依赖 shell 解析,直接从 inode 读取权限数据,更可靠。运行 stat filename,在 “Access” 行能看到两套表示:
例如:Access: (0644/-rw-r--r--)Uid: ( 1000/user) Gid: ( 1000/user)
其中 0644 是八进制权限值,-rw-r--r-- 是符号表示,二者严格等价。注意前导 0 表示八进制,不是“十进制 644”。
实用技巧:
stat -c "%a %A" filename 只提取权限数字和符号,适合脚本处理x 权限在 stat 输出中和文件一样显示为 x,但它实际作用是“能否 cd 进入”,不是“能否执行”stat 显示 Access: (0000/----------),说明权限被 mask 或 ACL 完全屏蔽,ls -l 可能仍显示部分符号(误导性)rwx 在文件和目录中的真实含义同一权限字符,在文件和目录上效果完全不同,这是最容易出错的地方:
r = 能 cat/head 内容;w = 能 echo/vim 修改内容;x = 能当作程序执行(如 ./script.sh)r = 能 ls 列出文件名(不包含子项属性);w = 能 touch/rm 目录内文件(需配合 x);x = 能 cd 进入、能访问子项的元数据(如 stat subfile)r 没 x 的目录:你能看到文件名,但 ls -l subfile 会报 Permission deniedx 没 r 的目录:你不能 ls,但若已知文件名,可以 cat known_file(前提是文件本身权限允许)当文件设置了 ACL(getfacl 可见)或特殊位(如 setuid),ls -l 的第 3 组权限位可能被修改(比如 rwx 变成 rws),但这些变化不改变底层 9 位权限值。
关键判断点:
s 或 S(如 -rwsr-xr-x):说明设置了 setuid(s)或 setgid(目录中常见 s),此时第 3 位 x 被替换成 s,但权限数值不变(仍是 4755)+(如 -rw-rw-r--+):表示存在 ACL,仅靠 ls -l 看不到全部权限,必须用 getfacl filename 查看扩展规则stat 的 Access 字段始终显示基础权限(不含 ACL),而 getfacl 才反映最终生效策略真正决定访问是否成功的,是内核在 open()/execve() 时综合基础权限 + ACL + capability + SELinux 等多层检查的结果,单看 ls -l 的 10 位只是起点。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9