linux中uid和gid分别是什么意思
linux中uid和gid分别是什么意思详细介绍
在 Linux 系统中,UID(用户标识符,User ID) 和 GID(组标识符,Group ID) 是用于标识用户和用户组的重要数字标识符,主要用于权限管理和系统资源访问控制。以下是具体解释:
1. UID(User ID)
- 定义:
UID 是一个唯一的整数,用于标识系统中的每个用户。系统内部通过 UID 而非用户名来区分用户,用户名只是 UID 的 “别名”。 - 常见取值范围:
- 超级用户(root):固定为
0,拥有最高权限。 - 系统用户:通常为
1~999(或1~499,不同发行版可能不同),用于运行服务(如daemon、nobody等),一般不直接登录。 - 普通用户:通常从
1000开始(现代 Linux 发行版,如 Ubuntu、CentOS 7+),由管理员或用户创建,用于日常操作。
- 超级用户(root):固定为
- 作用:
- 决定用户对文件、目录的访问权限(读 / 写 / 执行)。
- 作为进程的所有者标识,影响进程的资源访问权限(如绑定端口、修改系统文件等)。
- 存储位置:
UID 及其对应的用户名存储在/etc/passwd文件中,每行记录一个用户,格式为:
plaintextusername:x:uid:gid:comment:home:shell例如:
user1:x:1001:1001::/home/user1:/bin/bash,其中1001是 UID。
2. GID(Group ID)
- 定义:
GID 是标识用户组的整数,每个用户组对应一个唯一的 GID。用户可以属于多个组(一个主组 + 多个附加组),主组的 GID 会在用户创建时自动分配(通常与 UID 相同)。 - 分类:
- 主组(Primary Group):用户创建时默认归属的组,GID 记录在
/etc/passwd中(与用户的 GID 字段一致)。 - 附加组(Secondary Group):用户额外加入的组,GID 记录在
/etc/group文件中,一个组可包含多个用户。
- 主组(Primary Group):用户创建时默认归属的组,GID 记录在
- 作用:
- 用于文件权限的分组管理:文件的所属组由 GID 标识,同组用户共享该文件的组权限。
- 方便批量管理具有相同权限的用户(如将开发人员加入同一个组,统一分配目录读写权限)。
- 存储位置:
GID 及其对应的组名存储在/etc/group文件中,格式为:
plaintextgroupname:x:gid:member1,member2,...例如:
dev:x:1002:user1,user2,其中1002是 GID,user1和user2是组成员。
3. 核心区别与联系
| 特性 | UID | GID |
|---|---|---|
| 标识对象 | 单个用户 | 用户组 |
| 唯一性 | 每个用户唯一 | 每个用户组唯一 |
| 默认分配 | 用户创建时自动生成(管理员指定或系统分配) | 主组 GID 通常与 UID 相同,附加组需手动添加 |
| 权限影响 | 决定文件的所有者权限(user 权限) |
决定文件的所属组权限(group 权限) |
4. 实际应用场景
- 文件权限管理:
通过chown命令修改文件的所有者(UID)和所属组(GID):bashnew_user:new_group file.txtnew_user file.txt
new_group file.txt
- 查看用户 / 组信息:
id username:显示用户的 UID、主 GID 和附加组 GIDs。getent passwd uid或getent group gid:通过数值查询对应的用户名或组名。
- 进程安全:
服务进程通常以低权限用户(如 UID 1001)运行,避免被攻击时获取 root 权限。
总结
- UID 是用户的 “数字身份证”,用于区分不同用户并控制其对系统资源的访问。
- GID 是用户组的 “数字身份证”,用于批量管理用户权限,通过所属组共享文件访问权限。
- 系统底层通过 UID 和 GID 进行权限判断,而非用户名 / 组名,因此即使修改用户名,只要 UID 不变,权限不会改变。