在 Linux 系统中,用户 ID(UID,User ID)和组 ID(GID,Group ID)有一定的范围规定,具体如下:
1. UID/GID 的数值范围
不同的 Linux 发行版可能有不同的默认设置,但大体上遵循以下标准:
| 范围 | 用途 |
|-------------------|---------|
| 0 | 超级用户(root) |
| 1 - 99 | 预留给系统守护进程(传统 Unix 规范)|
| 100 - 499 | 预留给系统用户(不同发行版有所不同)|
| 500 - 65533 | 普通用户(CentOS/RHEL 6 及更早版本)|
| 1000 - 60000 | 普通用户(Debian、Ubuntu、CentOS 7+)|
| 65534 | `nobody` 用户,通常用于无权限用户|
| 65535 | 可能被用于 `nfsnobody`,但不固定 |
2. 详细说明
- Root 用户(UID=0)
- 具有最高权限,能执行系统所有操作。
- 系统用户(1-499 或 1-999)
- 这些用户通常不会直接登录,而是用于运行系统服务,如 `daemon`、`mail`、`sshd` 等。
- 普通用户(500+ 或 1000+)
- 这是为普通用户分配的 UID 范围,具体起始值取决于 Linux 发行版:
- RHEL/CentOS 6 及更早版本: 普通用户 UID 从 `500` 开始。
- RHEL/CentOS 7+ 和 Ubuntu/Debian: 普通用户 UID 从 `1000` 开始。
- nobody 用户(UID=65534)
- `nobody` 用户用于运行最小权限的进程,避免安全风险。
- NFS 相关用户(UID=65535 或 65534)
- 某些系统使用 `nfsnobody` (65534 或 65535) 处理 NFS 访问权限问题。
3. 如何查看当前 UID 范围
不同的 Linux 发行版定义的普通用户 UID/GID 范围可以在 `/etc/login.defs` 文件中查看:
```bash
grep -E 'UID_MIN|UID_MAX' /etc/login.defs
```
示例输出:
```
UID_MIN 1000
UID_MAX 60000
```
这表示普通用户 UID 从 1000 开始,到 60000 结束。
4. 如何查看当前用户 UID
```bash
id -u
```
或者查看所有用户的 UID:
```bash
cat /etc/passwd | awk -F: '{print $1, $3}'
```
5. 如何手动指定 UID 创建用户
```bash
useradd -u 2000 newuser
```
这样 `newuser` 的 UID 就是 2000,而不是默认的从 1000 开始分配。
如果你有特定的需求,可以告诉我,我可以给你更具体的建议!