首页 > 运维 > linux运维 > 正文

如何查看用户所属组 groups和id命令解析

P粉602998670
发布: 2025-08-15 09:46:01
原创
368人浏览过

要查看用户所属群组,应使用groups或id命令。1. 使用groups命令可直接列出用户所属的所有组,如groups username;2. 使用id命令能获取更全面的信息,包括uid、gid及所有组,如id username;3. 主组决定文件创建时的默认组,附加组用于扩展权限;4. 组变更后需重新登录或新开会话才能生效,因组信息在登录时缓存;5. 可通过usermod、gpasswd等命令管理用户和组,如usermod -ag添加用户到附加组,newgrp可临时启用新组权限。这些方法共同实现对用户权限结构的完整管理。

如何查看用户所属组 groups和id命令解析

在Linux或Unix-like系统里,想知道一个用户到底归属于哪些群组,

groups
登录后复制
id
登录后复制
命令是你的左右手。它们能迅速揭示用户在系统中的权限结构,这在权限管理和故障排查时特别有用。

解决方案

要查看用户所属的组,最直接且常用的就是

groups
登录后复制
id
登录后复制
这两个命令。

groups
登录后复制
命令用起来非常直观。如果你想查看当前登录用户所属的组,直接在终端输入:

groups
登录后复制

它会列出当前用户所加入的所有组名。比如,你可能会看到

youruser adm cdrom sudo dip plugdev lpadmin sambashare
登录后复制
这样的输出。

如果你需要查看特定用户的组信息,只需在

groups
登录后复制
后面加上用户名:

groups username
登录后复制

例如,要看

testuser
登录后复制
的组,就输入
groups testuser
登录后复制

id
登录后复制
命令则提供了更详细的信息,我个人更偏爱它,因为它给的信息更全面,不仅仅是组,还有用户ID(UID)和主组ID(GID),这在很多时候能提供更细致的上下文。

不带任何参数执行

id
登录后复制
,同样是查看当前用户:

id
登录后复制

输出通常是这样的格式:

uid=1000(youruser) gid=1000(youruser) groups=1000(youruser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),119(lpadmin),128(sambashare)
登录后复制
。这里清楚地显示了UID、主GID,以及所有附加组的ID和名称。

要查看特定用户的

id
登录后复制
信息,也只需跟上用户名:

id username
登录后复制

比如,

id testuser
登录后复制
id
登录后复制
命令还有一些有用的选项,例如
id -un
登录后复制
可以只显示用户名,
id -gn
登录后复制
只显示主组名,
id -gn
登录后复制
则只显示所有组名(和
groups
登录后复制
命令类似,但
id -gn
登录后复制
的输出通常更简洁,只列出名称)。

如知AI笔记
如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记 27
查看详情 如知AI笔记

用户的主组和附加组有什么区别

这块内容,我发现不少初学者会混淆,觉得只要在一个组里就行。但主组和附加组的差异,其实挺关键的。

每个用户在创建时都会被分配一个“主组”(Primary Group)。这个主组的ID就是

id
登录后复制
命令输出中
gid
登录后复制
后面跟着的那个。通常情况下,用户的主组会和用户名同名,比如用户
john
登录后复制
的主组就是
john
登录后复制
。当用户创建文件或目录时,如果没有特别指定,这些新创建的对象的默认所属组就是用户的主组。这意味着,主组在文件权限管理上扮演着一个默认的、基础性的角色。

而“附加组”(Supplementary Groups)则是用户除了主组之外,额外加入的其他组。一个用户可以同时属于多个附加组。这些附加组赋予用户访问特定资源或执行特定操作的权限。例如,用户加入

sudo
登录后复制
组就能使用
sudo
登录后复制
命令以root权限执行操作;加入
docker
登录后复制
组就可以无需
sudo
登录后复制
直接管理Docker容器。附加组的存在,主要是为了实现更灵活、更细粒度的权限控制,让用户能够根据工作需要获得不同的权限集合,而无需更改其主组。

简而言之,主组是用户身份的一部分,影响默认的文件创建行为;附加组则是用户额外获得的权限集合。

为什么有时groups命令的输出看起来不完整?

我遇到过不止一次这样的情况,明明把用户加到新组了,

groups
登录后复制
一查,还是老样子。当时就纳闷了,后来才意识到是会话的问题。

当你通过

usermod -aG newgroup username
登录后复制
这样的命令把一个用户加入到新的组之后,这个更改是即时生效在系统层面的。然而,用户当前正在运行的shell会话(或者说,当前的登录会话)并不会立即感知到这个变化。这是因为,当用户登录时,shell会读取用户的组信息并将其缓存起来。除非用户重新登录,或者启动一个新的shell会话,否则这个缓存的组信息不会更新。

所以,如果你刚刚把用户

testuser
登录后复制
加到了
newgroup
登录后复制
组,然后立即在
testuser
登录后复制
当前登录的终端里执行
groups
登录后复制
,你可能看不到
newgroup
登录后复制
。正确的做法是让
testuser
登录后复制
退出当前会话(比如注销再登录),或者简单地打开一个新的终端窗口(如果你的系统是图形界面),在新会话中执行
groups
登录后复制
id
登录后复制
,就能看到更新后的组信息了。

如果不想重新登录,但又想在当前会话中临时使用新组的权限,可以尝试使用

newgrp
登录后复制
命令。例如,
newgrp newgroup
登录后复制
。这会创建一个新的shell,其主组被临时设置为
newgroup
登录后复制
,并且你也会拥有
newgroup
登录后复制
的权限。但这种方式只是针对当前
newgrp
登录后复制
创建的子shell有效,并非全局性的会话更新。

除了groups和id,还有哪些方式可以管理用户和组?

当然,光看是不够的,很多时候我们还需要修改用户或组的属性。说起来,这些命令其实都是在操作系统底层那些配置文件,比如

/etc/passwd
登录后复制
/etc/group
登录后复制
之类的。

要管理用户和组,我们主要会用到以下一些命令:

  • usermod
    登录后复制
    : 这是修改用户属性的瑞士军刀。你可以用它来将用户添加到新的附加组(
    usermod -aG newgroup username
    登录后复制
    ),从组中移除用户(
    gpasswd -d username groupname
    登录后复制
    ,或者更直接地,通过
    usermod -G
    登录后复制
    重新指定所有附加组),甚至更改用户的主组(
    usermod -g new_primary_group username
    登录后复制
    )。
  • useradd
    登录后复制
    : 用于创建新用户。在创建时,你就可以指定用户的主组和附加组,例如
    useradd -g primary_group -G supplementary_group1,supplementary_group2 username
    登录后复制
  • userdel
    登录后复制
    : 删除用户。
  • groupadd
    登录后复制
    : 创建新的组。比如
    groupadd new_team
    登录后复制
  • groupdel
    登录后复制
    : 删除组。注意,如果组里还有用户,通常不能直接删除,需要先将用户从组中移除。
  • gpasswd
    登录后复制
    : 这个命令主要用于管理组的密码以及组成员。除了上面提到的
    gpasswd -d
    登录后复制
    来删除组成员,你也可以用
    gpasswd -a username groupname
    登录后复制
    来添加用户到组。相比
    usermod -aG
    登录后复制
    gpasswd -a
    登录后复制
    在某些场景下可能更便捷,因为它直接操作组本身。

这些命令共同构成了Linux/Unix系统用户和组管理的核心工具集,熟练掌握它们对于系统管理员来说是基本功。

以上就是如何查看用户所属组 groups和id命令解析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号