You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出以root为附属组的用户?主组与附属组区分方法

如何列出以root为附属组的所有用户?

当然有可行的方法来解决这个问题!你提到直接查看/etc/group和/etc/passwd时难以区分主组与附属组,确实这两个文件的分工很明确:/etc/passwd里的第4字段是用户的主组GID,而/etc/group中每个组条目最后一个字段,才是把该组作为附属组的用户集合。

下面是几种实用的命令方案,按需选择:

1. 直接解析本地/etc/group文件

这是最直接的本地用户查询方式,用grep定位root组,再用cut提取成员列表:

grep '^root:' /etc/group | cut -d: -f4
  • 说明:^root:确保只匹配以root开头的组条目(避免误匹配其他含root的组名),cut -d: -f4以冒号为分隔符,取出第4个字段——也就是该组的附属组成员,多个用户会用逗号分隔。

2. 用getent兼容集中用户管理场景

如果你系统里存在NIS、LDAP这类集中用户数据库,getent会比直接读文件更靠谱,它会查询系统所有配置的用户数据源:

getent group root | cut -d: -f4

效果和第一种方法一致,但兼容性更强,适合企业级多节点环境。

3. 精准筛选(排除主组为root的用户)

如果需要严格区分「仅附属组是root」的用户(排除root自身这类主组就是root的情况),可以用循环结合id命令逐个校验:

for user in $(cut -d: -f1 /etc/passwd); do
    primary_group=$(id -ng "$user")
    if [ "$primary_group" != "root" ] && id -nG "$user" | grep -q 'root'; then
        echo "$user"
    fi
done
  • 说明:id -ng获取用户的主组名称,id -nG列出用户所属的所有组(主组+附属组),通过判断主组不是root且组列表包含root,来精准筛选目标用户。

内容的提问来源于stack exchange,提问作者SGodoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:22