0

0

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

P粉602998670

P粉602998670

发布时间:2025-08-15 09:46:01

|

484人浏览过

|

来源于php中文网

原创

要查看用户所属群组,应使用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配音、虚拟人视频生成、PPT生成视频、虚拟人定制等多功能的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系统用户和组管理的核心工具集,熟练掌握它们对于系统管理员来说是基本功。

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

252

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

494

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

399

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

437

2024.04.08

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

703

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

11

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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