Linux系统中每个用户和组都有唯一的数字标识,这些标识就是用户ID和组ID,系统通过它们来识别身份、分配权限,不同类型的ID对应不同的用户权限和用途。

Linux用户ID的核心分类
Linux的用户ID(UID)主要分为三类,不同类型的UID取值范围和权限差异很大,具体如下:
| ID类型 | 取值范围 | 权限说明 |
|---|---|---|
| 超级用户UID | 0 | 拥有系统最高权限,可以执行所有操作,默认对应root用户 |
| 系统用户UID | 1-999(不同发行版略有差异,部分系统为1-499) | 用于运行系统服务进程,通常没有登录权限,仅用于进程身份标识 |
| 普通用户UID | 1000及以上(部分系统为500及以上) | 用于日常登录使用,权限受普通用户规则限制,可自定义配置 |
用户组ID(GID)的分类
和用户ID对应,用户组也有对应的组ID(GID),分类逻辑和用户ID类似:
- 超级用户组GID:0,对应root组,组内用户拥有root组相关权限
- 系统用户组GID:1-999,用于系统服务对应的组标识
- 普通用户组GID:1000及以上,用于普通用户自定义的分组
查看用户ID的方法
可以通过id命令查看当前用户或指定用户的ID信息,示例如下:
# 查看当前用户的ID信息 id # 查看指定用户test的ID信息 id test
执行上述命令后,会输出uid、gid以及用户所属的所有组信息,比如普通用户test的输出可能如下:
uid=1000(test) gid=1000(test) 组=1000(test),10(wheel)
其中uid就是用户ID,gid是用户的主组ID,后面的组是用户加入的附加组。
用户ID的配置文件
用户ID的相关信息存储在/etc/passwd文件中,每一行对应一个用户,字段用冒号分隔,第三个字段就是用户的UID,第四个字段是用户的主组GID,示例如下:
# 查看passwd文件中root和普通用户的信息 grep -E "root|test" /etc/passwd
输出内容类似:
root:x:0:0:root:/root:/bin/bash test:x:1000:1000:test user:/home/test:/bin/bash
可以看到root的uid和gid都是0,test用户的uid和gid都是1000,符合我们之前提到的分类规则。
注意事项
- 不要随意修改已有用户的UID,尤其是系统用户的UID,可能导致系统服务无法正常运行
- 新建普通用户的UID默认从当前最大UID值加1开始分配,也可以手动指定UID,需要保证UID唯一
- 用户权限不仅和UID有关,还和用户所属组的权限、文件的权限位设置相关,需要结合多方面判断