如何在 Linux 中找出用户属于哪些组

Linux 组是一个或多个对文件和目录具有相同权限要求的用户的集合。 一个用户一次可以是多个组的成员。 在 Linux 中,每个组信息都存储在 “/等/组” 文件。 在本教程中,我们将看到在 Linux 和类 Unix 操作系统中轻松找出用户所属组的所有可能方法。

在许多情况下,找出用户帐户所属的组会很有帮助。 例如,前几天我在 在我的 Ubuntu 服务器上安装 Dropbox. 配置 Dropbox 时,我必须输入我当前的用户名和组名。 您还可能处于需要识别用户所属组的情况。 如果是这样,请使用以下任何一种方法来了解用户所在的组。

找出用户在 Linux 中属于哪些组

有很多方法可以列出 Linux 用户所属的组。 最常用的方法是使用 团体 命令。

方法 1 – 分组命令

团体 命令显示当前组名以及用户属于 Linux 和类 Unix 操作系统中的这些组。

首先,让我们找出我们的 Linux 系统中有多少组。

要查找 Linux 中可用的列表,请运行 团体 不带任何参数的命令,如下所示:

$ groups

样本输出:

sk adm disk cdrom sudo dip plugdev lpadmin sambashare kvm libvirt vboxusers

列出 Linux 中的可用组

正如您在上面的输出中看到的,我的系统中当前有 12 个组。

现在,找出特定用户的哪些组,对于 example sk, 属于。 为此,在用户名后面输入“groups”命令,如下所示:

$ groups sk

样本输出:

sk : sk adm disk cdrom sudo dip plugdev lpadmin sambashare vboxusers kvm libvirt

使用 groups 命令找出用户在 Linux 中属于哪些组

这里, sk 是我的用户名,用户 sk 是上述所有组的成员。 您可能已经注意到“sk”被列出了两次。 因为,我对用户名和组名使用了相同的名称。

有关“组”命令的更多详细信息,请参阅手册页。

$ man groups

方法 2 – id 命令

识别用户所在组的另一种方法是使用 “ID” 命令。 id 命令用于打印指定 USER 的用户和组信息。 如果未指定 USER,它将打印当前用户的信息。

要使用“id”命令识别用户所属的所有组,请运行:

$ id sk

代替 sk 使用您的用户名。

样本输出:

uid=1000(sk) gid=1000(sk) groups=1000(sk),4(adm),6(disk),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),1001(vboxusers),129(kvm),136(libvirt)

使用 id 命令找出用户在 Linux 中属于哪些组

使用 id 命令找出用户在 Linux 中属于哪些组

正如您在此处看到的, id 命令不仅列出了用户所属的组,还列出了给定用户和组的组 ID 和用户 ID(UID 和 GID)。 它比“groups”命令有更详细的输出,所以如果你需要组 id/用户 id 使用这个!

如果您不想打印数字,只需使用 -Gn 标志如下:

$ id -Gn sk
sk adm disk cdrom sudo dip plugdev lpadmin sambashare vboxusers kvm libvirt

有关更多详细信息,请参阅手册页。

$ man id

方法 3 – 使用“/etc/group”文件

正如我已经说过的, /etc/组 文件包含有关 Linux 系统中每个组的信息。 您可以从 /etc/组 文件的帮助下 “grep” 命令如下图:

$ grep sk /etc/group

样本输出:

adm:x:4:syslog,sk
disk:x:6:sk
cdrom:x:24:sk
sudo:x:27:sk
dip:x:30:sk
plugdev:x:46:sk
lpadmin:x:116:sk
sk:x:1000:
sambashare:x:126:sk
vboxusers:x:1001:sk
kvm:x:129:sk
libvirt:x:136:sk,libvirtdbus

如果要排除组 ID 和用户名并仅显示组名,请将“grep”命令的输出通过管道传输到 “哇” 命令如下:

$ grep sk /etc/group | awk -F: '{ print $1 }'

样本输出:

adm
disk
cdrom
sudo
dip
plugdev
lpadmin
sk
sambashare
vboxusers
kvm
libvirt

使用 grep 和 awk 命令在 Linux 中查找用户所属的组

使用 grep 和 awk 命令在 Linux 中查找用户所属的组

方法 4 – getent 命令

“得到” 命令显示名称服务切换库支持的数据库中的条目,这些库在 /etc/nsswitch.conf 文件。

我们可以使用 getent 命令列出 Linux 系统中所有可用的组及其成员,如下所示:

$ getent group

要查找特定用户(例如 sk)所属的组,请运行:

$ getent group | grep sk

样本输出:

adm:x:4:syslog,sk
disk:x:6:sk
cdrom:x:24:sk
sudo:x:27:sk
dip:x:30:sk
plugdev:x:46:sk
lpadmin:x:116:sk
sk:x:1000:
sambashare:x:126:sk
vboxusers:x:1001:sk
kvm:x:129:sk
libvirt:x:136:sk,libvirtdbus

如果您只想显示不包括所有其他详细信息的组,请使用“grep”和“awk”命令过滤输出,如下所示:

$ getent group | grep sk | awk -F: '{ print $1 }'
adm
disk
cdrom
sudo
dip
plugdev
lpadmin
sk
sambashare
vboxusers
kvm
libvirt

在 Linux 中使用 getent、grep 和 awk 命令查找用户所属的组

在 Linux 中使用 getent、grep 和 awk 命令查找用户所属的组

列出所有用户属于 Linux 中的一个组

我们还可以找到属于特定组的所有用户的列表。 例如,以下命令显示属于名为的组的用户 贮存.

$ grep -w storage /etc/group
storage:x:95:sk

容易,对吧? 确实。 查找用户所属的组以及特定组的用户非常容易!

相关阅读:

  • 如何在 Linux 中列出组的成员
  • 如何在你的 Linux 系统中查找所有 Sudo 用户

锄头这有帮助。