组账号管理
一、解析组账号文件
(一)组账号基本信息
/etc/group,保存组账号的基本信息
每个组记录一行,以:分割为4个字段
字段 | 含义 |
---|---|
字段1 | 组账号的名称 |
字段2 | 密码占位符x |
字段3 | 组账号的GID号 |
字段4 | 本组的成员用户列表 |
[root@localhost ~]# head -1 /etc/group
root:x:0:
// 新建附加组
[root@localhost ~]# useradd -G root nsd20
[root@localhost ~]# id nsd20
uid=1001(nsd20) gid=1001(nsd20) 组=1001(nsd20),0(root
[root@localhost ~]# head -1 /etc/group
root:x:0:nsd20
// 新建基本组
[root@localhost ~]# useradd -g root nsd21
[root@localhost ~]# id nsd21
uid=1002(nsd21) gid=0(root) 组=0(root)
// 字段4不包括基本组的成员,只会记录附加组
[root@localhost ~]# head -1 /etc/group
root:x:0:nsd20
(二)组账号管理信息
/etc/gshadow,保存组账号的管理信息
每个组记录一行,以:分割为4个字段
字段 | 含义 |
---|---|
字段1 | 组账号的名称 |
字段2 | 加密后的密码字符串 |
字段3 | 本组的管理员列表 |
字段4 | 本组的成员用户列表 |
[root@localhost ~]# head -1 /etc/gshadow
root:::nsd20
二、组账号的增删改查
(一)groupadd添加组
groupadd命令
格式:groupadd [-g GID] 组名
[root@localhost ~]# groupadd -g 800 stugrp
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:800:
(二)groupdel删除组
groupdel命令
格式:groupdel组名
被删除的组不能是用户的基本组
[root@localhost ~]# groupdel stugrp
[root@localhost ~]# grep stugrp /etc/group
[root@localhost ~]# useradd -g student nsd30
[root@localhost ~]# id nsd30
uid=1003(nsd30) gid=900(student) 组=900(student)
// 基本组就是主组
[root@localhost ~]# groupdel student
groupdel:不能移除用户“nsd30”的主组
// 修改nsd30用户基本组
[root@localhost ~]# usermod -g users nsd30
// 删除成功
[root@localhost ~]# groupdel student
(三)groupmod修改组
groupmod命令
格式:groupmod -g GID 组名
groupmod-n 新组名组名
[root@localhost ~]# groupadd -g 950 teacher
[root@localhost ~]# grep teacher /etc/group
teacher:x:950:
// 修改组名
[root@localhost ~]# groupmod -n tea teacher
[root@localhost ~]# grep tea /etc/group
tea:x:950:
// 修改Gid
[root@localhost ~]# groupmod -g 960 tea
[root@localhost ~]# grep tea /etc/group
tea:x:960:
(四)groups查询组信息
groups命令
格式:groups [用户名]…
[root@localhost ~]# useradd -g users -G tea nsd40
[root@localhost ~]# id nsd40
uid=1004(nsd40) gid=100(users) 组=100(users),960(tea)
// 查询组信息
[root@localhost ~]# groups nsd40
nsd40 : users tea
三、管理组成员
(一)gpasswd工具
gpasswd命令
格式:gpasswd [选项]… 组名
常用命令选项
-A:定义组管理员列表
-a:添加组成员,每次只能加一个
-d:删除组成员,每次只能删一个
-M:定义组成员用户列表,可设置多个
// 创建stugrp组
[root@localhost ~]# groupadd -g 1300 stugrp
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1300:
// 新建用户
[root@localhost ~]# useradd harry
[root@localhost ~]# useradd natasha
[root@localhost ~]# useradd jack
[root@localhost ~]# useradd hunter
// 添加组成员
[root@localhost ~]# gpasswd -a harry stugrp
正在将用户“harry”加入到“stugrp”组中
// 添加成功
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1300:harry
// harry用户的基本组还是harry,stugrp是附加组
[root@localhost ~]# id harry
uid=1005(harry) gid=1005(harry) 组=1005(harry),1300(stugrp)
[root@localhost ~]# gpasswd -a natasha stugrp
正在将用户“natasha”加入到“stugrp”组中
[root@localhost ~]# gpasswd -a jack stugrp
正在将用户“jack”加入到“stugrp”组中
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1300:harry,natasha,jack
[root@localhost ~]# gpasswd -d harry stugrp
正在将用户“harry”从“stugrp”组中删除
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1300:natasha,jack
// -M 定义组成员用户列表,相当于覆盖
[root@localhost ~]# gpasswd -M 'harry,hunter' stugrp
// natasha,jack不见了
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1300:harry,hunter
// 定义为空,相当于清空用户列表
[root@localhost ~]# gpasswd -M '' stugrp
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1300:
[root@localhost ~]# gpasswd -M 'harry,hunter,jack,natasha' stugrp
// 切换jack用户
[root@localhost ~]# su - jack
[jack@localhost ~]$ gpasswd -a natasha stugrp
gpasswd:没有权限。
[jack@localhost ~]$ exit
登出
// 定义jack为管理员
[root@localhost ~]# gpasswd -A jack stugrp
[root@localhost ~]# su - jack
上一次登录:日 7月 30 21:03:57 CST 2023pts/0 上
[jack@localhost ~]$ gpasswd -a natasha stugrp
正在将用户“natasha”加入到“stugrp”组中
// 在jack用户下删除harry
[jack@localhost ~]$ gpasswd -d harry stugrp
正在将用户“harry”从“stugrp”组中删除
[jack@localhost ~]$ grep stugrp /etc/group
stugrp:x:1300:hunter,jack,natasha
[jack@localhost ~]$ gpasswd -M 'harry' stugrp
gpasswd:没有权限。
四、基本组切换及认证
(一)设置/清除组密码
gpasswd命令
格式:gpasswd [-r] 组账号名
添加-r 时为移除密码,否则设置密码
[root@localhost ~]# groupadd class
[root@localhost ~]# grep class /etc/gshadow
class:!::
// 设置密码:123456
[root@localhost ~]# gpasswd class
正在修改 class 组的密码
新密码:
请重新输入新密码:
[root@localhost ~]# grep class /etc/gshadow
class:$6$n1xJe//6kS$1pJmgXQaMpitXtiW94X9edJff5RdVCdZnKN2SFMsYXZIYT700IsSlMKeoiGu2Ib1iZU.k.ei9WDQOi2wG/ZUb0::
(二)切换基本组
newgrp命令
适用于临时加入一个新组的情况
[root@localhost ~]# su - harry
[harry@localhost ~]$ groups
harry
// 加入class组
[harry@localhost ~]$ newgrp class
密码:
// 临时加入class组
[harry@localhost ~]$ groups
class harry
[harry@localhost ~]$ exit
登出
[root@localhost ~]# su - harry
上一次登录:日 7月 30 21:19:00 CST 2023pts/0 上
最后一次失败的登录:日 7月 30 21:20:49 CST 2023pts/0 上
最有一次成功登录后有 1 次失败的登录尝试。
[harry@localhost ~]$ groups
harry