Linux权限模型核心是“用户-组-其他”三级主体与读(r)、写(w)、执行(x)三类权限的组合,分别控制文件内容访问、修改及运行,以及目录遍历、列表和增删改操作,需结合上下文与对象类型理解。

Linux权限模型的核心是“用户-组-其他”三级控制结构,配合读(r)、写(w)、执行(x)三类基本权限,共同决定谁能在什么条件下访问或操作文件与目录。理解它不靠死记,而在于搞清“谁在什么上下文中对什么对象做了什么”。
用户、组、其他:权限作用的三类主体
每个文件或目录都归属一个所有者(user)和一个所属组(group),其余用户统称为“other”。权限设置就是分别给这三类主体分配独立的r/w/x组合。
-
user(u):创建该文件的用户,或被显式用chown改过的所有者
-
group(g):文件所属组,用户可通过usermod -aG加入多个组,但只有“主组”或“附加组”中匹配的那个组生效
-
other(o):既不是所有者,也不在所属组里的所有人——这是默认兜底权限,务必谨慎放宽
读、写、执行:三类权限在文件和目录中的真实含义
同一权限符号(如x)在文件和目录中效果完全不同,混淆是常见错误根源。
-
对普通文件:
• r:可查看内容(cat、less等)
• w:可修改内容、截断、重写(但不包括删除——那是父目录权限)
• x:可作为程序运行(需同时有r权限才能正确加载解释器,如shell脚本)
-
对目录:
• r:可列出目录内文件名(ls),但看不到属性(如ls -l需x)
• w:可在该目录下创建、删除、重命名文件(需同时有x才生效)
• x:可进入该目录(cd)、访问其子路径、查看文件详细信息(ls -l)。没有x,即使有r也只看到名字,无法打开或stat
权限表示法:符号式与数字式如何对应
两种写法本质一致,只是表达形式不同。关键记住:每类主体对应三位二进制,r=4、w=2、x=1,相加得0–7。
-
符号式(ls -l输出):-rwxr-xr-- 表示
• 第1位:文件类型(-普通文件,d目录,l链接等)
• 第2–4位:user权限(rwx = 4+2+1 = 7)
• 第5–7位:group权限(r-x = 4+0+1 = 5)
• 第8–10位:other权限(r-- = 4+0+0 = 4)→ 八进制即754
-
数字式(chmod用):
• chmod 644 file → user: rw- (6), group: r-- (4), other: r-- (4)
• chmod 750 dir → user: rwx (7), group: r-x (5), other: --- (0),组内成员可进可查不可写
实战中必须注意的几个细节
权限不是孤立起作用的,常被忽略的隐含规则反而决定成败。
- 删除文件不由文件自身w权限决定,而由其父目录的w+x权限控制——因为删除本质是修改目录的数据块(移除文件名条目)
- 执行脚本前,shell需先读取文件内容,所以sh script.sh 要求script.sh有r权限;./script.sh 则要求有x权限(且所在目录有x)
- umask影响新建文件默认权限:它不是“加权限”,而是从最大权限中“屏蔽”掉对应位。例如umask 002 → 文件默认664(666&~002),目录默认775(777&~002)
- setuid/setgid粘滞位(s/S、t)属于扩展权限,不在基础rwx之内,但会覆盖部分行为,如passwd命令依赖setuid让普通用户临时获得root权限修改shadow
基本上就这些。权限模型看着多,理清主体、对象、动作三层关系,再区分文件/目录语义差异,大部分问题都能自然推导出来。
以上就是Linux权限模型完整讲解_Linux读写执行权限详细说明的详细内容,更多请关注php中文网其它相关文章!