id -g 输出当前用户主组 GID,如 1001;id -G 输出全部所属组 GID 列表,空格分隔,如 1001 27 100;主组 GID 决定新文件默认属组,全部组 GID 决定对已有文件的访问权限。

直接运行 id -g 就能获取当前用户的主组数字 GID,这是配置服务权限时最常用、最准确的方式。
只查主组 GID:用 id -g
这个命令输出一个纯数字,就是当前用户所属的主组(基本组)的 GID。比如:
-
id -g→ 输出1001 - 说明该用户的主组 GID 是 1001,对应 /etc/group 中第 3 字段为 1001 的那一行
查所有组 GID 列表:用 id -G
服务常需要访问多个组资源(如日志目录、设备节点),这时得知道用户所属的全部组 ID:
-
id -G→ 输出类似1001 27 100(空格分隔) - 其中 27 是 sudo 组,100 是 users 组——这些附加组 GID 在设服务文件属组或 ACL 时很关键
配合服务配置的实际用法
比如给 systemd 服务指定运行组,或设置目录属组权限:
- 让服务以某组身份读取数据:
Group=1001(写在 .service 文件中) - 授权某目录给用户主组:
chgrp 1001 /var/myapp/data && chmod g+rx /var/myapp/data - 脚本中做权限判断:
[ $(id -g) -eq 1001 ] && echo "允许启动"
注意区分 -g 和 -G 的用途
主组 GID(-g)决定新创建文件的默认属组;所有组 GID(-G)决定用户能否访问已有文件(取决于文件的组权限和其他组权限位)。配置服务时两者都可能用到,但别混淆:
- 设服务运行组 → 看
id -g或明确指定目标组名再查其 GID - 检查用户能否访问某个属组为 27 的 socket → 要确认 27 是否在
id -G输出里











