用户组管理
# 什么是用户组
- 组是一种逻辑层面的定义
- 逻辑上将多个用户归纳至一个组,当我们对组操作,其实就相当于对组中的所有用户进行操作。
# 组有几种类别
- 对于用户来说,组分为如下几类
- 默认组:创建用户时不指定组,则默认创建与用户同名的组;
- 基本组:用户有且只能有一个基本组,创建时可通过-g指定(亲爹);
- 附加组:用户可以有多个附加组,创建时通过-G指定(干爹);
# 组相关配置文件
- 组账户信息保存在
/etc/group和/etc/gshadow两个文件中,重点关注group
# group文件
/etc/group配置文件解释如下图

# gshadow文件
/etc/gshadow配置文件解释如下图

# 用户组相关命令
# 添加组groupadd
若想要添加Linux用户组,可以使用groupadd命令,使用root账号登录Linux系统之后就可以添加用户组了。
| 选项 | 功能描述 |
|---|---|
| -g | 为新组设置GID,若GID已经存在会提示GID已经存在 |
| -r | 创建一个系统组 |
# 添加组示例1
添加一个
salary的组- 为组设定
gid为10000
[root@web ~]# groupadd salary -g 10000 [root@web ~]# tail -1 /etc/group salary:x:10000:1
2
3- 为组设定
# 添加组示例2
添加一个
salary_2的组- 添加为系统组
[root@web ~]# groupadd -r salary_2 [root@web ~]# tail -1 /etc/group salary_2:x:988:1
2
3
# 修改组groupmod
若想要修改Linux用户组,可以使用groupmod命令,使用root账号登录Linux系统之后就可以修改用户组了。
| 选项 | 功能描述 |
|---|---|
| -g | 为新组设置GID,若GID已经存在会提示GID已经存在 |
| -n | 改名为新的组 |
# 修改组示例1
修改
salary用户组组名为system[root@web ~]# groupmod -n system salary [root@web ~]# tail -1 /etc/group system:x:10000:1
2
3
# 修改组示例2
修改system用户组
GID为5000[root@web ~]# groupmod system -g 5000 [root@web ~]# tail -1 /etc/group system:x:5000:1
2
3
# 删除组groupadd
若想要修改Linux用户组,可以使用groupdel命令,使用root账号登录Linux系统之后就可以修改用户组了。
# 删除组示例1
删除salary_2系统用户组
[root@web ~]# groupdel salary_21
# 删除组示例2
创建
tom用户,设置主组为system,然后测试删除system组[root@web ~]# useradd tom -g system [root@web ~]# groupdel system groupdel:cannot remove the primary group of user 'tom' #如果组中存在用户是无法删除该组,必先删除用户后在删除组 [root@web ~]# userdel -r tom [root@web ~]# groupdel system1
2
3
4
5
6
7
# 用户与用户组场景
场景:
- 创建
dev与ops两个组; - 创建
bob用户,设定基本组为dev,密码为123; - 创建
alice用户,设定基本组为ops,密码为123; - 创建
/opt/reosurce文件,然后修改属组为ops、权限为664; - 测试发现
alice用户可以读写,而bob用户仅可以查看; - 现在希望
bob也能够对文件进行读写,如何快速实现(为bob添加ops附加组);
操作:
创建组与用户;
[root@web ~]# groupadd dev [root@web ~]# groupadd ops [root@web ~]# useradd bob -g dev [root@web ~]# useradd alice -g ops1
2
3
4为用户设定登陆密码;
[root@web ~]# echo "123" | passwd --stdin bob [root@web ~]# echo "123" | passwd --stdin alice1
2建立文件,然后分配好权限;
[root@web ~]# echo "data" > /opt/resource [root@web ~]# chgrp ops /opt/resource [root@web ~]# chmod 664 /opt/resource1
2
3使用
ops组的alice用户测试读和写权限,没有任何问题;[alice@web ~]$ echo "alice-data" >> /opt/resource [alice@web ~]$ cat /opt/resource data alice-data1
2
3
4使用
dev组的bob用户测试读和写权限,发现只有读权限,没有写权限;[bob@web ~]$ echo "bob-data" >> /opt/resource -bash:/opt/resource:权限不够 [bob@web ~]$ cat /opt/resourcedata alice-data1
2
3
4为
bob用户添加ops附加组,这样bob用户就能借助ops组权限,实现读写操作;[root@web ~]# usermod bob -G ops [root@web ~]# id bob uid=1002(bob) gid=2020(dev) groups=2020(dev),2021(ops)1
2
3再次测试,发现
bob用户能借助ops组实现读和写操作;[bob@web ~]$ echo "bob-data" >> /opt/resource [bob@web ~]$ cat /opt/resource data alice-data bob-data1
2
3
4
5
Last Updated: 2021/11/05, 14:31:43