Linux权限模型完整讲解_Linux读写执行权限详细说明

8次阅读

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

Linux 权限模型完整讲解_Linux 读写执行权限详细说明

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

基本上就这些。权限模型看着多,理清主体、对象、动作三层关系,再区分文件 / 目录语义差异,大部分问题都能自然推导出来。

text=ZqhQzanResources