Linux 中的主要和次要组及其差异
Contents
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。