如何找出Linux中用户所属的组

Linux组是一个或多个对文件和目录具有相同权限要求的用户的集合。 一个用户一次可以是多个组的成员。 在Linux中,每个组信息都存储在 “ / etc / group” 文件。 在本教程中,我们将看到所有可能的方法,以轻松找出用户在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个组。

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

$ groups sk

样本输出:

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

使用groups命令找出用户在Linux中属于哪个Groups

这里, 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 / group 该文件包含有关Linux系统中每个组的信息。 您可以从以下内容中找到给定用户所属的组: / etc / group 文件的帮助 “ 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”命令的输出通过管道传递到 “ awk” 如下命令:

$ 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命令

“ 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

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

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

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

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

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

容易吧? 的确。 查找用户属于哪个组以及特定组的用户非常简单!

相关阅读:

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

this这有帮助。

Awk commandgetent命令组commandid命令LinuxLinux基础Linux命令Linux组用户管理

Sidebar