Linux权限模型由UID/GID与文件三组权限位共同决定,用户和组本质是数字ID,文件访问按Owner→Group→Others顺序匹配,依赖/etc/passwd、/etc/shadow、/etc/group等文件管理。

Linux的权限模型核心是“谁对什么能做什么”,它不靠身份标签说话,而是靠UID/GID和文件元数据里的三组权限位共同决定访问结果。
用户与组的本质是数字ID,不是名字
系统内部只认UID(用户)和GID(组),用户名和组名只是/etc/passwd和/etc/group里的可读别名。root固定为UID 0,普通用户通常从1000起;每个用户有且仅有一个主组(GID记录在/etc/passwd第4字段),还可加入最多31个附加组(记录在/etc/group中)。执行id命令能看到当前用户实际生效的所有GID。
文件权限三元组决定访问行为
每个文件或目录的inode里存着三组rwx权限:Owner、Group、Others。权限含义依对象类型而异:
- 对普通文件:r=读内容,w=改内容,x=当作程序运行
- 对目录:r=列出文件名(ls),w=增删改文件名,x=进入该目录(cd)或访问其下文件的属性
- 没有x权限的目录,即使r权限开着,也无法cat其下任何文件——因为无法获取目标文件的inode信息
访问判定遵循严格顺序
当进程尝试访问一个文件时,内核按以下逻辑判断是否放行:
- 若进程有效UID等于文件所有者UID → 检查Owner权限位
- 否则,若进程有效UID属于文件所属组(主组或任一附加组) → 检查Group权限位
- 否则 → 检查Others权限位
只要命中其中一条,就按对应权限位决定成败,不再继续匹配。注意:组判定依赖/proc/PID/status里的Groups字段,该字段由登录时的/etc/group快照生成,切换组需重新登录或使用newgrp。
权限管理依赖几个关键配置文件
/etc/passwd存用户基本信息(UID、主GID、shell、家目录);/etc/shadow存加密密码及策略(如过期时间);/etc/group存组名、GID及成员列表。修改这些文件需用useradd、usermod、gpasswd等命令,而非直接编辑——否则易破坏格式导致登录失败。特殊权限位(SUID/SGID/Sticky Bit)通过chmod u+s、g+s、+t等方式设置,用于解决共享目录协作、提权执行等特定场景。










