Contents

Linux 中的主要和次要组及其差异

1. 概述

在 Linux 中,组为一组用户提供了一种方便的方式来相互共享文件和目录。有两种类型的组:主要组和次要组。 在本教程中,我们将了解 Linux 中的用户组以及两种类型的组之间的区别。此外,我们将学习如何将用户添加到辅助组。

2. 定义

让我们看看每个术语的含义:

  • 组:组是可以共享文件和其他系统资源的用户的集合
  • 主要组:指定操作系统分配给用户创建的文件的组。自然,每个用户都必须属于一个主要组
  • 次要组:指定用户也属于的一个或多个组。此外,用户最多可以属于 15 个辅助组

当我们在 Linux 中创建新用户时,也会创建一个与该用户同名的新组并与该用户关联。这个新组是用户的主要组。

用户创建后,最多也可以属于 15 个辅助组。此外,属于次要组是可选的,而用户必须属于一个主要组。

3. 例子

让我们借助示例来了解情况。

3.1. 创建新用户

首先,我们应该使用useradd 创建一个新用户:

$ sudo useradd --create-home bob

–create-home将使 useradd为**bob 创建一个主目录。

3.2. 列出用户的组

groups 命令列出指定用户所属的所有组。 并且,如果未指定用户,则该命令使用当前用户作为输入:

$ groups bob
bob : bob

我们可以看到新创建的用户属于自己的主组,与用户同名。

3.3. 查找用户的主要组

/ etc / passwd包含每个用户及其主要组。例如,让我们在其中找到bob  :

$ grep bob /etc/passwd
bob:x:1001:1001::/home/bob:/bin/sh

我们 在 /etc/passwd文件中找到了bob 。此外,输出意味着:

  • 第一个1001是用户的UID(用户ID)
  • 第二个 1001 是用户的主要组。所以,用户的主组也叫bob, 它的 GID(组 ID)是 1001
  • /home/bob显示用户的主目录

3.4. 创建文件

现在让我们创建一个由bob拥有的文件:

$ touch file.txt
$ ls -l
total 0
-rw-rw-r-- 1 bob bob 0 Jun  3 00:36 file.txt

ls -l将以长列表格式列出当前目录中的文件,显示有关它们的更多详细信息:

  • 第一个 bob是拥有该文件的用户
  • 第二个 bob显示文件属于哪个组;当然,它是创建它的用户的主要组

我们可以看到新创建的文件属于创建它的用户及其主要组。当然,我们可以使用chown 命令更改所有者,使用chgrp 命令更改组。

3.5. 创建辅助组

现在让我们创建一个辅助组并向其中添加一些用户:

$ sudo useradd --create-home jane
$ sudo useradd --create-home alex
$ sudo groupadd secondary
$ sudo gpasswd -a jane teachers
Adding user jane to group teachers
$ sudo gpasswd -a alex teachers
Adding user alex to group teachers

groupadd 创建一个新组,  gpasswd -a将用户添加到组中。当然,每个新用户现在都属于自己的主要组以及新的次要组。

3.6. 寻找次要组成员

/etc/group文件包含次要组成员:

$ grep teachers /etc/group
teachers:x:1005:jane,alex

teachers组是jane和 alex的次要组。此外,teachers组的 GID 为 1005。