Linux提供了一系列的命令管理用户组。用户组就是具有相同特征的用户集合。每个用户都有一个用户组,系统能对一个用户组中所有用户进行集中管理,通过把相同属性的用户定义到同一用户组,并赋予该用户自一定的操作权限,这样用户组下的用户对该文件或目录都具备了相同的权限。 通过对 /etc/group 文件的更新实现对用户组的添加、修改和删除。

一个用户可以属于多个组,/etc/passwd 中定义的用户组为基本组,用户所属的组有基本组和附加组之分,如一个用户同属多个组,该用户所拥有的权限是它所在组的权限之和。

一、添加用户组 groupadd

groupadd 命令实现用户组的添加,其参数如下所示:

  1. -g 强制把某个 ID 分配给已经存在的用户组,该 ID 必须是非负并且唯一的值
  2. -o 允许多个不同的用户组使用相同的组 ID
  3. -p 使用组密码
  4. -r 创建一个系统组

groupadd 使用示例:

添加用户组 grop1

# 查找是否存在用户组 grop1
[root@localhost ~]# cat /etc/group | grep grop1
# 添加用户组 grop1
[root@localhost ~]# groupadd  grop1
# 查看是否添加成功
[root@localhost ~]# cat /etc/group | grep grop1
grop1:x:1001:
[root@localhost ~]#

二、修改用户组 groupmod

groupmod 可以更改用户组的 用户组ID 或用户组名称,常用参数如下所示:

-g 设置欲使用的用户组 ID
-o 允许多个不同的用户组使用相同的组ID
-n 设置欲使用的用户组名称

groupmod 使用示例:

修改用户组 grop1 名称为 grop2

# 查看用户组 grop1 的组名称和组ID
[root@localhost ~]# cat /etc/group | grep grop1            
grop1:x:1001:
# 修改用户组 grop1 名称为 grop2
[root@localhost ~]# groupmod -n grop2 grop1
# 查看修改是否修改成功, 组ID为1001 的用户组名称已经由 grop1 改为 grop2
[root@localhost ~]# cat /etc/group | grep grop2
grop2:x:1001:
[root@localhost ~]#

修改 grop2 的用户组ID:

# 查看用户组 grop2 的组ID
[root@localhost ~]# cat /etc/group | grep grop2
grop2:x:1001:
# 修改 grop2 的用户组ID为1003
[root@localhost ~]# groupmod -g 1003 grop2
# 查看是否修改成功
[root@localhost ~]# cat /etc/group | grep grop2
grop2:x:1003:
[root@localhost ~]#

三、删除用户组 groupdel

需要从系统中删除用户组时,可用 groupdel 命令来删除用户组。如果该组中仍包括某些用户,则必须先删除这些用户后(把这些用户移出该用户组),才能删除用户组。当该组的用户存在是,用户组时不能被删除的,当属于该组的用户被移出后,该用户组可以被成功删除。

groupdel 使用实例:

# 添加用户组 grop2
[root@localhost ~]# groupadd grop2
# 将用户 hk 添加到用户组 grop2
[root@localhost ~]# usermod -g grop2 hk
# 删除用户组 grop2 ,该组中有用户 hk 删除失败
[root@localhost ~]# groupdel grop2     
groupdel: cannot remove the primary group of user 'hk'
# 从用户组 grop2 中移出用户 hk
[root@localhost ~]# usermod -g hk hk   
# 用户组 grop2 中没有用户时,删除用户组 grop2
[root@localhost ~]# groupdel grop2  
# 查看是否删除成功
[root@localhost ~]# cat /etc/group |grep grop2
[root@localhost ~]#