- 系统版本:Ubuntu
- 连接终端:Xshell
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,Linux系统中组也分为root组、系统组、普通用户组三类。当一个用户属于多个组时,这些组中只能有一个作为该用户的主属组,其他组就被称为此用户的次属组。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
预备知识
- 当你创建一个用户时,系统自动创建一个同名的群组,且该用户为默认组成员。
- 当你删除一个用户时,若同名群组没有其他成员则一并删除
- 当你登录一个用户时,默认登录到他的主群组,并拥有主群组的权限
- 当普通用户要额外加入其他群组时,只能加入已经设置密码的群组
- 群组号可以不唯一,群组名作为标识
查看群组信息
方法一:
权限需求:all
指令格式:cat /etc/group
如上图,第一列为群组名,第二列为密码(x表示密码被屏蔽),第三列为群号,第四列为组成员(默认成员不显示)
方法二:
权限需求:root
指令格式:cat /etc/gshadow
如上图,第一列为组名,第二列为组密码(未设置为!),第三列为管理员密码,第四列为成员列表。
组创建指令groupadd
权限需求:root
指令格式:groupadd [-g gid [-o]] [-r] [-p <groupPassword>]<groupname>
参数说明:
-g:指定新建工作组的 id;
-o:允许添加组 ID 号不唯一的工作组。
-K:覆盖配置文件 “/ect/login.defs”;
-p: 群组密码;
-r :建立系统的群组
创建一个指定组号的群组
groupadd -g <groupID> <groupname>
cat /etc/group
如上图,我们成功创建了一个组号为2023,名为group2的群组,创建成功过后,我们还未设置密码普通用户无法加入该群组,且群组中没有成员。
创建一个指定组号但组号不唯一的群组
groupadd -g <groupID> -o <groupname>
此时创建的群组group4允许存在相同组号的群组。如下图:
我们发现想要建立一个相同组号的群组也需要在命令中声明-o
创建一个带密码的群组
groupadd -g <groupID> -p <groupPassword> <groupname>
cat /etc/gshadow
组信息修改指令groupmod
权限需求:root
指令格式:groupmod [-g <群组识别码> <-o>] [-n<新群组名称>] [-p <newPassword>]<groupname>
参数说明:
-g <群组识别码> 设置欲使用的群组识别码。
-o 重复使用群组识别码。
-n <新群组名称> 设置欲使用的群组名称。
-p <群组密码> 设置新的群组密码
修改组名
groupmod -n <newGroupname> <groupname>
如上图,我们将group1重命名为group6,我们发现更改名称后,其数据成员,密码等其他信息均被保留。
修改组号
groupmod -g <newGroupID> <groupname>
我们将group6的组号改成2043,其他信息均保留。
修改组号唯一性
groupmod -g <newGroupID> -o <groupname>
如上图,我们将独占2033组号的group3修改为非独占组号,并创建了一个组号同样为2033的group7.