第十九章 Linux系统用户组管理详解
一、用户组介绍
1.什么是用户组
在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GID,UID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。
Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此课件,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往关注用户较多与关注用户组。
2.组的分类
Linux 组分为两类:
1.基本组 #一个用户只能拥有一个基本组
2.附加组 #当基本组的权限不够用户使用的,就出现了附加组 一个用户允许拥有多个附加组
二、用户组配置文件
1.跟组相关的文件
[root@jindada ~]# ll /etc/group
-rw-r--r-- 1 root root 573 Jul 21 11:04 /etc/group
[root@jindada ~]# ll /etc/gshadow
---------- 1 root root 449 Jul 21 11:04 /etc/gshadow
2.用户组的基本信息
# 以冒号为分隔符 分为4列
[root@jindada ~]# cat /etc/group #用户组的基本信息文件
root:x:0:
bin:x:1:
daemon:x:2:
mail:x:12:postfix
第一列: root #组的名称
第二列: x #组的密码占位符
第三列: 0 #组的GID
第四列: #用户名 哪些用户使用此组作为附加组 多个用逗号分割
3.用户组的组密码文件
# 以冒号为分隔符 分为四列
[root@jindada ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
mail:::postfix
第一列: root #组的名称
第二列: !或者空 #用户组的密码信息 空或者!是没有密码
第三列: 空 #用户组的管理者
第四列: 空 #用户名 哪些用户使用此组作为附加组 多个用逗号分割
三、用户组管理命令-groupadd
1.含义
groupadd命令来自于英文词组“group add”,其功能是用于创建新的用户组。每个用户在创建时都有一个与其同名的基本组,后期可以使用groupadd命令创建出新的用户组信息,让多个用户加入到指定的扩展组中,为后续的工作提供了良好的文档共享环境。
语法格式:groupadd [参数] 用户组
2.常用参数
-g | 指定新建工作组的id |
---|---|
-r | 创建系统工作组 |
-K | 覆盖配置文件“/ect/login.defs” |
-o | 允许添加组ID号不唯一的工作组 |
3.常见示例
创建一个新的用户组
[root@jindada ~]# groupadd user_group01
[root@jindada ~]# tail -1 /etc/group
user_group01:x:1007:
创建一个新的用户组,并指定GID号码
[root@jindada ~]# groupadd -g 666 user_group02
[root@jindada ~]# tail -1 /etc/group
user_group02:x:666:
创建一个新的用户组,设定为系统工作组
[root@jindada ~]# groupadd -r user_group03
[root@jindada ~]# tail -1 /etc/group
user_group03:x:664:
四、用户组管理命令-groupmod
1.含义
groupmod命令用于更改群组的识别码或名称时。不过大家还是要注意,用户名不要随意修改,组名和 GID 也不要随意修改,因为非常容易导致管理员逻辑混乱。如果非要修改用户名或组名,则建议大家先删除旧的,再建立新的。
语法格式:groupmod [参数]
2.常用参数
-g | 修改用户组的ID GID |
---|---|
-o | 重复使用群组识别码 |
-n | 设置欲使用的群组名称 |
3.常用示例
更改指定用户组的GID
[root@jindada ~]# groupmod -g 6666 user_group01
[root@jindada ~]# grep 'user_group01' /etc/group
user_group01:x:6666:
更改指定用户组的名称
[root@jindada ~]# groupmod -n new_group user_group01
[root@jindada ~]# grep 'new_group' /etc/group
new_group:x:6666:
五、用户组管理命令-groupdel
1.含义
groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。
userdel修改系统账户文件,删除与 GROUP 相关的所有项目。给出的组名必须存在。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
语法格式:groupdel [参数] [群组名称]
2.常用参数
-h | 显示帮助信息 |
---|---|
-R | 在chroot_dir目录中应用更改并使用chroot_dir目录中的配置文件 |
3.常见示例
使用groupdel命令删除new_group工作组
[root@jindada ~]# groupdel new_group
[root@jindada ~]# grep 'new_group' /etc/group
删除作为某个用户的附加组的用户组 ,删除没有影响
[root@jindada ~]# groupdel user01
[root@jindada ~]# grep '1002' /etc/group
user05:x:1002:jindada01
[root@jindada ~]# grep '1002' /etc/passwd
user05:x:1001:1002::/home/user05:/bin/bash
test:x:1002:1003::/home/test:/bin/bash
[root@jindada ~]# id user05
uid=1001(user05) gid=1002(user05) groups=1002(user05)
删除一个组作为某个用户的基本组 ,是不能删除的
解决:
给这里面的用户重新找个基本组
把用户也一并删除掉
[root@jindada ~]# groupdel user05
groupdel: cannot remove the primary group of user 'user05'
[root@jindada ~]# usermod -g 1003 user05
[root@jindada ~]# id user05
uid=1001(user05) gid=1003(test) groups=1003(test)
[root@jindada ~]# groupdel user05