Linux 组

2025年3月17日 | 阅读 3 分钟

用户可以被列入不同的组。组允许我们在组级别设置权限,而不是在个体级别设置权限。

每个 Linux 发行版都有一个图形化工具来管理组。组可以通过图形化工具、命令行工具以及 vi 或 vigr 来管理,具体取决于用户的经验。只有有经验的用户才应该使用 vivigr 来管理组,因为它们会进行适当的锁定或修改文件。

groupadd

groupadd 命令用于在我们的系统中创建或添加一个组。

语法

示例

Linux Local Group1

从上面的截图可以看出,通过 groupadd 命令创建了 php、java、android 和 spring 组。


组文件

/etc/group 文件定义了组的成员关系。一个用户可以属于多个组。

语法

Linux Local Group2

从上面的截图可以看出,第一列是组名,第二列是组的加密密码,可以为空,第三列是组标识(GID),第四列是成员列表。第四列是空的,因为这些组没有成员。

群体

group 命令会显示当前用户所属的组。

语法

Linux Local Group3

从上面的截图可以看出,用户 jtpsssit 属于不同的组。


usermod

组的成员可以使用 usermoduseradd 命令进行编辑。如果一个组未被列出,那么默认情况下,usermod 命令会将用户从他所属的所有组中移除。这里,使用了 -a(追加) 选项来防止这种情况发生。

语法

示例

Linux Local Group4

从上面的截图可以看出,我们已经显示了 /etc/group 的列表。用户 akkiabc 被添加到了 php 组,用户 jtp 被添加到了 java 组。


groupmod

通过 groupmod 命令,您可以更改一个已存在的组的名称。

语法

示例

Linux Local Group5

从上面的截图可以看出,组 spring 已被更改为 sql


gruopdel

groupdel 命令将永久删除系统中的一个组。

语法

示例

Linux Local Group6

从上面的截图可以看出,组 sql 已被从系统中删除。


gpasswd

使用 gpasswd 命令可以将组的成员管理权限传递给另一个用户。

语法

示例

Linux Local Group7

从上面的截图可以看出,我们已经通过命令 "gpasswd -A jtp java"java 组的成员管理权限传递给了用户 jtp。然后我们 su 到 jtp 用户,并将 aaa 添加到 java 组。

组管理员不必是该组的成员。他们可以在不属于该组的情况下添加或删除成员。

/etc/gshadow 文件保存了组管理员的信息,如下面的截图所示。

Linux Local Group8

要从一个组中删除所有管理员,请设置一个空的管理员列表。

语法

示例

Linux Local Group9

从上面的截图可以看出,管理员 jtp 已从 java 组中被删除。