用户组管理
# 什么是用户组
- 组是一种逻辑层面的定义
- 逻辑上将多个用户归纳至一个组,当我们对组操作,其实就相当于对组中的所有用户进行操作。
# 组有几种类别
- 对于用户来说,组分为如下几类
- 默认组:创建用户时不指定组,则默认创建与用户同名的组;
- 基本组:用户有且只能有一个基本组,创建时可通过-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_2
1
# 删除组示例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 system
1
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 ops
1
2
3
4为用户设定登陆密码;
[root@web ~]# echo "123" | passwd --stdin bob [root@web ~]# echo "123" | passwd --stdin alice
1
2建立文件,然后分配好权限;
[root@web ~]# echo "data" > /opt/resource [root@web ~]# chgrp ops /opt/resource [root@web ~]# chmod 664 /opt/resource
1
2
3使用
ops
组的alice
用户测试读和写权限,没有任何问题;[alice@web ~]$ echo "alice-data" >> /opt/resource [alice@web ~]$ cat /opt/resource data alice-data
1
2
3
4使用
dev
组的bob
用户测试读和写权限,发现只有读权限,没有写权限;[bob@web ~]$ echo "bob-data" >> /opt/resource -bash:/opt/resource:权限不够 [bob@web ~]$ cat /opt/resourcedata alice-data
1
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-data
1
2
3
4
5
Last Updated: 2021/11/05, 14:31:43