使用 groupadd、usermod 和 groupdel 管理 Linux 用户组

CompTIABeginner
立即练习

介绍

在本实验中,你将学习在 Linux 环境中管理用户组的核心技能。你将亲自动手实践用于用户组管理的各种核心命令行工具,包括用于创建新组的 groupadd、用于修改用户成员身份的 usermod 以及从系统中移除组的 groupdel

你将遵循一个实用的工作流程,从创建一个新组开始。接着,你将把一个现有用户添加到该组中,并使用 grepgroups 等检查命令来验证更改。为了完成实验,你还将练习移除该组并确认其已被删除,从而掌握用户组管理的完整生命周期。

使用 groupadd 创建新的 Linux 用户组

在这一步中,你将学习如何在 Linux 系统上创建一个新的用户组。在 Linux 中,用户组是同时管理多个用户权限的关键机制。与其为每个用户单独分配权限,不如将权限分配给一个组,任何属于该组的用户都会继承这些权限。这简化了系统管理,尤其是在用户众多的环境中。

在本次练习中,假设你是一家公司的系统管理员,需要为一个新进的研发团队创建一个新组。我们将使用 groupadd 命令来完成此操作。该命令需要管理员权限,你可以通过 sudo 来获取。

首先,打开你的终端。它应该默认在 ~/project 目录下打开。现在,让我们创建一个名为 research 的新组。

执行以下命令:

sudo groupadd research

sudo 命令提升了你的权限以执行此管理任务。groupadd 是创建组的命令,而 research 是我们为新组选择的名称。

如果命令执行成功,它不会产生任何输出。要确认组是否已创建,你可以检查 /etc/group 文件。该文件存储了系统中所有组的信息。我们可以使用 grep 命令在该文件中搜索我们新创建的组。

grep research /etc/group

你应该在输出中看到与 research 组对应的新行。格式为 组名:密码占位符:组ID:成员。你的组 ID(GID)可能与下面的示例不同,这是正常的,因为系统会自动分配它。

research:x:5003:

此输出确认 research 组现在已存在于你的系统中,随时可以向其中添加用户。

使用 usermod 将用户添加到次要组

在这一步中,你将把一个现有用户添加到你创建的 research 组中。在 Linux 中,每个用户都有一个「主要组」(primary group),并且可以属于多个「次要组」(secondary groups,也称为补充组)。这实现了灵活的权限管理。现在 research 组已经准备就绪,我们将把当前用户 labex 作为次要组添加到其中。这将授予 labex 用户分配给 research 组的任何权限,而不会更改其主要组。

要修改用户的组数成员身份,我们使用 usermod 命令。这是一个用于更改用户帐户详细信息的强大工具。

我们将使用带有 -aG 选项的 usermod 命令:

  • -G:指定新的次要组列表。
  • -a:代表「追加」(append)。这是一个非常重要的选项。它将用户添加到指定的组中,而不会将其从当前组中移除。如果你省略了 -a,用户将从命令中未列出的所有其他次要组中被移除。

在你的终端中,执行以下命令将 labex 用户添加到 research 组:

sudo usermod -aG research labex

此命令需要 sudo 权限,因为它修改了系统级的用户信息。research 是我们要将用户加入的组,而 labex 是被修改的用户。与 groupadd 一样,如果执行成功,此命令不会产生任何输出。

你可以通过再次检查 /etc/group 文件来立即验证更改。

grep research /etc/group

你现在应该看到 labex 用户列在 research 组这一行的末尾。

research:x:5003:labex

这确认了 labex 现在是 research 组的成员。

使用 grep 和 groups 检查组和用户成员身份

在这一步中,你将学习更高效的方法来检查用户的组身份。虽然我们已经对 /etc/group 文件使用了 grep 来查看特定组的成员,但还有更直接的方法来查看特定用户所属的所有组。这是系统管理员验证权限和配置的常用任务。

首先,让我们再次使用 grep,但这次是为了查找用户 labex 所属的每一个次要组。通过在 /etc/group 文件中搜索用户名,你可以看到所有将 labex 列为成员的组条目。

在终端中执行此命令:

grep labex /etc/group

输出将显示 /etc/group 中包含字符串「labex」的每一行。这将包括我们添加用户的 research 组,以及任何其他默认的次要组。根据你的系统配置,你的输出可能会包含额外的组。

sudo:x:27:labex
ssl-cert:x:121:labex
labex:x:5000:
public:x:5002:labex
research:x:5003:labex

虽然这种方法可行,但对于此任务,一个更直接且用户友好的命令是 groups。该命令专门用于列出给定用户的所有组(包括主要组和次要组)。

要查看 labex 用户所属的所有组,请运行以下命令:

groups labex

该命令提供了用户组所属关系的清晰单行摘要。

labex : labex sudo ssl-cert public research

在此输出中,冒号前的名称(labex)是被查询的用户。冒号后的列表显示了所有组。列表中的第一个组(labex)是用户的「主要组」。所有后续的组(sudossl-certpublicresearch)都是「次要组」。这个命令通常是获取用户组成员身份完整全貌的最快方式。

使用 groupdel 删除组并验证其移除

在最后一步中,你将学习如何从系统中移除一个组。当一个团队解散或一个项目完成,且其关联的组不再需要时,这是一个常见的管理任务。要删除一个组,我们使用 groupdel 命令。

就像创建组一样,删除组也是一种需要 sudo 权限的管理操作。需要注意的是,你不能删除现有用户的「主要组」。在删除旧的主要组之前,你必须先更改用户的主要组。然而,由于 research 只是 labex 的一个次要组,我们可以毫无问题地删除它。

在你的终端中,执行以下命令来删除 research 组:

sudo groupdel research

groupdel 命令在成功执行时不会产生任何输出。它只是简单地从系统的组数据库(主要是 /etc/group 文件)中移除该组的条目。

为了确认该组已被成功移除,我们可以使用之前用来检查其是否存在的相同 grep 命令。

grep research /etc/group

这一次,该命令应该没有任何输出。它会立即让你回到命令提示符。没有输出正是确认包含 research 的行已从 /etc/group 文件中移除的证据,因此,该组在系统上已不再存在。

总结

在本实验中,你学习了在 Linux 环境中管理用户组的基础知识。你首先使用 sudo groupadd 命令创建了一个名为 research 的新组,这是组织用户和简化权限管理的重要工具。为了确认组的成功创建,你使用 grep 命令检查了 /etc/group 文件,验证了新组条目已被正确添加。

本实验还涵盖了用户组管理的完整生命周期。你学习了如何使用 usermod 命令将现有用户添加到次要组,以及如何使用 grepgroups 等工具检查组数成员身份。最后,你练习了使用 groupdel 命令从系统中移除一个组并验证其删除情况,从而完善了你对基本用户组管理任务的理解。