系统用户组是专用于守护进程和服务的组,gid范围通常为1–999,通过groupadd -r自动分配低位gid并写入/etc/group和/etc/gshadow,不可手动指定高gid或跳过-r参数。

创建系统用户组,核心是用 groupadd -r,它会自动分配符合系统规范的低 GID(通常小于 1000),并写入 /etc/group 和 /etc/gshadow。
什么是系统用户组
系统用户组专用于守护进程、服务或底层功能,比如 daemon、syslog、docker 等。它的 GID 范围由 /etc/login.defs 中的 SYS_GID_MIN 和 SYS_GID_MAX 控制(常见为 1–999)。这类组不供普通用户登录使用,也不该手动指定高 GID。
创建标准系统组(推荐方式)
直接加 -r 参数即可:
-
sudo groupadd -r nginx—— 创建名为 nginx 的系统组,GID 自动从可用低位中分配 -
sudo groupadd -r docker—— 为 Docker 服务准备专用组
执行后可验证:getent group nginx 应返回类似 nginx:x:987:(GID 为三位数)。
手动指定系统 GID 的情况
某些场景需固定 GID(如与已有服务配置对齐),此时要同时用 -r 和 -g:
-
sudo groupadd -r -g 84 sshd—— 强制设 GID 为 84,且标记为系统组 - 注意:若该 GID 已被占用且未加
-o,命令会失败 - 不建议跳过
-r单独用-g 84,否则系统可能不识别其为系统组
避免常见错误
以下操作容易引发权限或兼容性问题:
- 不要用
-g指定大于 999 的数字再加-r,多数发行版会忽略-r或报错 - 不要对系统组使用
-f强制覆盖——系统组名通常有约定俗成用途,重名可能干扰服务启动 - 创建后记得把对应服务用户加入该组,例如:
sudo usermod -aG nginx www-data











