如何在 Linux 中检查用户是否属于某个组

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Linux 系统中检查用户是否属于特定组。了解用户的组隶属关系对于管理 Linux 系统上的权限和访问控制至关重要。

你将探索三种不同的方法来验证用户的组隶属关系:使用 groups 命令列出用户所属的组,查看包含组信息的 /etc/group 文件,以及使用 id 命令显示用户和组的身份信息。完成本实验后,你将能够熟练确定用户所属的组。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/groups("Group Displaying") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") subgraph Lab Skills linux/cat -.-> lab-558773{{"如何在 Linux 中检查用户是否属于某个组"}} linux/groups -.-> lab-558773{{"如何在 Linux 中检查用户是否属于某个组"}} linux/id -.-> lab-558773{{"如何在 Linux 中检查用户是否属于某个组"}} end

使用 groups 命令列出用户所属的组

在这一步中,我们将探讨如何使用 groups 命令列出用户所属的组。了解用户组在 Linux 系统中至关重要,因为它们用于管理对文件和资源的权限和访问。

groups 命令是一个简单的实用工具,它会打印出每个指定用户名对应的主组和附属组的名称;如果未指定用户名,则打印当前进程所属的组。

让我们来查看当前用户 (labex) 所属的组。

如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来打开终端。

现在,输入以下命令并按回车键:

groups

你应该会看到类似以下的输出:

labex sudo ssl-cert public

此输出显示了 labex 用户所属的组。在这个示例中,labex 用户属于 labexsudossl-certpublic 组。

  • 列出的第一个组通常是用户的主组。
  • 后续的组是附属组。

属于 sudo 组很重要,因为这允许用户使用 sudo 命令以超级用户权限执行命令,就像你在上一个实验中安装 htop 时所做的那样。

如果你知道其他用户的用户名,也可以使用 groups 命令来查看他们所属的组。例如,要查看 root 用户所属的组,你可以输入:

groups root

输出将显示 root 用户所属的组,通常只有 root 组:

root

了解用户所属的组有助于你了解他们在系统上拥有的权限。

点击 Continue 继续下一步并验证你的命令执行情况。

/etc/group 文件中检查用户的组隶属关系

在这一步中,我们将查看 /etc/group 文件,它是 Linux 系统中一个至关重要的系统文件,用于存储用户组的相关信息。虽然 groups 命令可以快速列出用户所属的组,但查看 /etc/group 文件能让你了解系统中哪些用户属于哪些组。

/etc/group 文件中每个组占一行,每行包含四个以冒号分隔的字段:

  1. 组名:组的名称。
  2. 密码字段:通常为 'x',表示不使用组密码(或密码存储在其他地方)。
  3. 组 ID (GID):组的唯一数字标识符。
  4. 成员:属于该组的用户列表,以逗号分隔。请注意,以该组作为主组的用户不会列在此处。

我们可以使用 cat 命令来显示该文件的内容。cat 是一个标准的 Unix 实用工具,它按顺序读取文件并将其内容输出到标准输出。

打开终端,输入以下命令查看 /etc/group 文件的内容:

cat /etc/group

按下回车键。

你会看到大量输出,每行代表系统中的一个不同组。查找第四字段(成员列表)中包含 labex 用户名的行。

例如,你可能会看到类似以下的行(实际输出会有所不同):

...
sudo:x:27:labex
...
ssl-cert:x:121:labex
...
public:x:5002:labex
...

在这些示例行中:

  • sudo 组包含 labex 作为成员。
  • ssl-cert 组包含 labex 作为成员。
  • public 组包含 labex 作为成员。

请注意,如果 labex 组是 labex 用户的主组,那么在第四字段中可能不会将 labex 列为该组的成员。

groups 命令的简单输出相比,查看 /etc/group 文件能让你更详细地了解组的配置情况。对于系统管理员来说,这是一个了解用户权限的重要文件。

点击 Continue 进入下一步。

使用 id 命令验证用户所属的组

在这一步中,我们将再次使用你在第一个实验中用过的 id 命令。id 命令可以全面展示用户的身份信息,包括用户 ID (UID)、主组 ID (GID) 以及用户所属的所有组。这个命令是验证用户组隶属关系的快捷方式。

你已经使用过 id 命令来查看自己的 UID 和 GID。现在,让我们重点关注其输出中的 groups 部分,并将其与你在第一步中使用 groups 命令以及查看 /etc/group 文件时得到的结果进行比较。

打开终端并输入以下命令:

id

按下回车键。

你会看到类似以下的输出:

uid=XXXX(labex) gid=XXXX(labex) groups=XXXX(labex),XX(sudo),XXX(ssl-cert),XXXX(public)

(注意:XXXXXX 是实际数字 ID 的占位符,这些数字可能会略有不同,但组名应该是一致的。)

让我们再次分析一下输出,重点关注 groups 部分:

  • uid=XXXX(labex):你的用户 ID 和用户名。
  • gid=XXXX(labex):你的主组 ID 和主组名。
  • groups=XXXX(labex),XX(sudo),XXX(ssl-cert),XXXX(public):一个以逗号分隔的列表,包含你所属的所有组,包括主组和所有附属组。

id 命令输出中 groups= 部分的组名列表与你在第一步中使用 groups 命令得到的输出进行比较,你应该会看到相同的组名列表。

id 命令通常比 groups 命令更受青睐,因为它还会提供数字 ID(UID 和 GID),这在脚本编写和系统管理任务中非常有用。它能在一行输出中完整呈现用户的身份信息和所属组。

现在你已经学习了三种在 Linux 中检查用户组隶属关系的方法:使用 groups 命令、查看 /etc/group 文件以及使用 id 命令。每种方法提供的信息略有不同,适用于不同的场景。

点击 Continue 完成此步骤和本实验。

总结

在本次实验中,我们学习了如何使用三种不同的方法来检查 Linux 系统中用户是否属于某个组。首先,我们使用 groups 命令快速列出指定用户或当前用户的主组和附属组,了解到用户的组隶属关系决定了其权限和访问范围。

接着,我们探究了 /etc/group 文件,这是一个包含详细组信息的基础系统文件,并学习了如何解读其结构,从而直接验证用户的组隶属关系。最后,我们使用了 id 命令,这是一个功能多样的实用工具,它能提供全面的用户和组信息,包括用户 ID、主组 ID 以及所有附属组 ID,为确认用户的组隶属关系提供了另一种方式。