如何在 RHEL 8/CentOS 8 上将用户添加到组如何在 RHEL 8/CentOS 8 上将用户添加到组如何在 RHEL 8/CentOS 8 上将用户添加到组如何在 RHEL 8/CentOS 8 上将用户添加到组
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 RHEL 8/CentOS 8 上将用户添加到组

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在自主访问控制 (DAC) 机制的上下文中,对系统资源、文件和目录的访问基于用户的身份及其所属组。这种类型的访问控制称为“自由裁量”,因为用户可以执行自己的策略决策(当然,受其自己的权限限制)。在本教程中,我们将了解如何将用户添加到组以及 RHEL 8/CentOS 8 Linux 系统上的主组和辅助组之间有什么区别。

在本教程中您将学习:

  • 主要组和次要组有什么区别

  • 如何使用 usermod 命令将用户添加到组

  • 如何使用 vigr 直接将用户添加到组中

如何在 Rhel8 上将用户添加到组

什么是团体?

Linux基于Unix,是一个多用户操作系统:系统中确实存在多个用户并共享资源。在最简单的层面上,对此资源的访问是通过使用DAC(自主访问控制)模型来管理的。例如,对文件和目录的访问基于用户的身份及其所属的组。在本教程中,我们将了解如何将用户添加到 Red Hat Enterprise Linux 8 计算机上的现有组。

小学组和中学组

如今,像几乎所有其他主要 Linux 发行版一样,Red Hat 使用一种称为 UPG 或用户私有组的方案:每次创建新用户时,都会自动创建一个同名的新组用户也被创建,并且用户成为其唯一成员。这就是所谓的主要或私有组。

每个用户都有自己的主要组,以自己的名字命名,没有其他成员。此设置可以更改默认的 umask 值:传统上它是 022 (这意味着文件的 644 权限和 755 目录),现在通常设置为 002 (文件权限为 664,目录权限为 775)。

由于默认情况下,用户创建的每个文件或目录都是使用该用户的主要组创建的,因此此设置在保留安全性(用户仍然只能修改自己的文件)的同时,简化了作为组成员的用户之间的资源共享和协作。当使用 setgid 位时,通过允许该组的写权限来访问同一组。

我们可以使用groups命令获取用户所属组的列表:

$ groups
egdoc wheel

从命令的输出中我们可以观察到,当前用户egdoc属于egdoc组(它是它自己的主要组),并且属于wheel组,这使他能够使用 sudo 运行命令,这就是所谓的辅助组:默认情况下不与用户关联的可选组。

使用 usermod 将用户添加到组

虽然用户是其主要组的唯一成员,但我们可能希望将用户添加到辅助组,也许是为了授予他对某种资源的访问权限。举例来说,我们有一个 test 用户,我们想将其添加到现有的 linuxconfig 组中:完成此任务的最简单且推荐的方法是使用 >usermod 命令:

$ sudo usermod -a -G linuxconfig test

让我们检查一下我们使用的选项。 usermod 实用程序,让我们修改用户帐户;通过使用它,我们可以执行广泛的操作,例如更改用户的主目录、为其帐户设置到期日期或立即锁定它。该命令还允许我们将用户添加到现有组中。我们在本例中使用的选项是 -G (--groups 的缩写)和 -a(这是 --groups 的缩写)和 -a(这是 <代码>--追加)。

-G 或 –groups 选项让我们提供用户应加入的以逗号分隔的补充组列表。正如我们之前所说,每个提供的组必须已存在于系统中。要记住的一件非常重要的事情是,无论是否还提供了 -a 选项,所提供的组列表的解释都不同:在第一种情况下,该列表被解释为用户的补充组除了他已经是其中的成员之外,还应该添加;当未提供 -a 选项时,该列表将被解释为用户应属于的组的绝对列表。如命令手册页中所述,在后一种情况下,如果用户当前所在的组不属于提供给命令的列表,则将从该组中删除!

用户“test”现在是“linuxconfig”组的成员。我们来验证一下:

$ sudo groups test
test : test linuxconfig

直接将用户添加到组中

使用 usermod 是将用户添加到组的最简单方法。为了完整起见,我们现在将研究使用 vigr linux 命令执行相同任务的另一种方法。此命令让我们可以直接编辑 /etc/group 和 /etc/gshadow 文件,并在它们打开时锁定它们,以防止它们损坏并确保一致性。

仅当使用 -s 选项时,才会修改文件 (/etc/gshadow) 的“shadow”版本。要使用此方法将“test”用户添加到“linuxconfig”组,我们应该以超级用户身份运行 vigr 命令:/etc/group 文件将在默认编辑器(通常是 vi):

[...]
chrony:x:993:
egdoc:x:1000:
cgred:x:992:
docker:x:991:
apache:x:48:
test:x:1001:test
linuxconfig:x:1002:
[...]

用于表示每个组的语法如下:

group-name:group-password:group-id:users

这些字段用冒号分隔:第一个是组名称,第二个是组的“密码”(通常不设置),第三个字段是GID或组-ID。最后一个字段是以逗号分隔的组成员列表。要将“test”用户添加到“linuxconfig”组,我们应该修改此字段,使该行变为:

linuxconfig:x:1002:test

执行更改后,我们可以保存并关闭文件。终端上将出现一条消息:

You have modified /etc/group.
You may need to modify /etc/gshadow for consistency.
Please use the command 'vigr -s' to do so.

由于我们更改了 /etc/group 文件,该消息建议我们也更改相关的影子文件,即 /etc/gshadow。对于那些不知道的人来说,影子文件用于存储加密版本的信息,而这些信息以纯文本形式存储是不安全的。例如,正如我们之前看到的,在 /etc/group 文件中报告了一个 x,代替了可选的组密码;密码的散列版本(如果存在)将存储在影子文件中。

现在,让我们对 /etc/gshadow 文件进行与之前相同的更改,以便它与 /etc/group 同步。我们所要做的就是向 vigr 命令提供 -s 标志:

$ sudo vigr -s

文件打开后,我们进行所需的更改:

linuxconfig:!::test

之后,我们必须强制写入该文件,因为它是只读的:使用 vi 时,我们可以通过运行 w! 命令来执行此操作。

保持两个文件同步的另一种方法是使用 grpconv 命令,该命令从 /etc/group 创建 /etc/gshadow 文件code>,也可以选择从现有的 /etc/gshadow 文件中获取:

$ sudo grpconv

此时,我们可以通过运行以下命令来验证两个文件之间的一致性:

$ sudo grpck

此时不应显示任何输出。

结论

在本教程中,我们了解了主要组和次要组之间的区别以及它们在 DAC 模型中的角色。我们了解了如何通过使用 usermod 命令(这是推荐的方式)或直接使用 vigr 命令安全地编辑 将用户添加到组中>/etc/group 和 /etc/gshadow 文件。无论您决定使用什么程序来执行此管理任务,您都应该始终给予最大的关注。

©2015-2025 Norria support@norria.com