RHSCA---用户和组管理
用户和组管理
在 Linux 中有三种用户:
- 超级用户,这类用户的 uid 和 gid 值都是 0,它们是用于管理系统的用户。
- 系统用户,这类用户的 uid 和 gid 值在 201 ~ 999 之间,这类用户不用于登录,而是用于软件的进程管理。
- 普通用户,这类用户的 uid 和 gid 值在 1000 ~ 60000 之间,是我们最常见的用户类型。
这些默认的配置数据在 /etc/login.defs 文件中。
一个用于定义 用户账户创建 和 登录 过程中各种默认设置和规则的系统级配置文件。
[root@localhost ~]# vim /etc/login.defs如果我们创建了一个用户,那么它会在以下几个地方写入值:
1、/home 目录下会创建一个与用户名相同的目录,在目录下有一些隐藏文件,这些文件来自于 /etc/skel 目录下的文件。
2、在 /var/spool/mail 目录下会创建一个与用户名同名的目录
3、会在 /etc/passwd 文件中添加一行记录
4、会在 /etc/shadow 文件中添加一行记录
5、会在 /etc/group 文件中添加一行记录
6、会在 /etc/gshadow 文件中添加一行记录
1.用户管理
1.1创建用户
创建用户使用 useradd 命令,可以看相关文件,不要死背
[root@bogon ~]# useradd --help
Usage: useradd [options] LOGINuseradd -Duseradd -D [options]Options:--badname                 do not check for bad names-b, --base-dir BASE_DIR       base directory for the home directory of thenew account--btrfs-subvolume-home    use BTRFS subvolume for home directory-c, --comment COMMENT         GECOS field of the new account-d, --home-dir HOME_DIR       home directory of the new account-D, --defaults                print or change default useradd configuration-e, --expiredate EXPIRE_DATE  expiration date of the new account-f, --inactive INACTIVE       password inactivity period of the new account-g, --gid GROUP               name or ID of the primary group of the newaccount-G, --groups GROUPS           list of supplementary groups of the newaccount-h, --help                    display this help message and exit-k, --skel SKEL_DIR           use this alternative skeleton directory-K, --key KEY=VALUE           override /etc/login.defs defaults-l, --no-log-init             do not add the user to the lastlog andfaillog databases-m, --create-home             create the user's home directory-M, --no-create-home          do not create the user's home directory-N, --no-user-group           do not create a group with the same name asthe user-o, --non-unique              allow to create users with duplicate(non-unique) UID-p, --password PASSWORD       encrypted password of the new account-r, --system                  create a system account-R, --root CHROOT_DIR         directory to chroot into-P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files-s, --shell SHELL             login shell of the new account-u, --uid UID                 user ID of the new account-U, --user-group              create a group with the same name as the user-Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mappingeg:
1.#创建用户
[root@bogon ~]# useradd zlp
[root@bogon ~]# id zlp
uid=1000(zlp) gid=1000(zlp) groups=1000(zlp)- 
uid=1000(zlp): 用户 ID 是 1000,用户名是 zlp。这是您登录时使用的身份。
- 
gid=1000(zlp): 主组 ID 是 1000,主组名是 zlp。当用户创建一个新文件时,文件默认就属于这个主组。
- 
groups=1000(zlp): 用户 zlp 所属的所有组 的列表。在这个例子中,用户 zlp 只属于一个组,就是他的主组zlp。一个用户不仅可以有一个主组,还可以被添加到多个其他组中,这些其他组就叫做 附属组 
2.#创建一个系统用户
[root@bogon ~]# useradd -M -r -s /sbin/nologin sxy
[root@bogon ~]# id sxy
uid=995(sxy) gid=995(sxy) groups=995(sxy)- -M:不创建用户的家目录
- -r:创建一个系统用户(通常 UID 在特定系统范围内,如 1-999)
- -s /sbin/nologin:设置用户的登录 shell 为- /sbin/nologin
特点:
- 无家目录 (
-M)
- 系统不会为这个用户创建
/home/sxy目录- 适用于不需要交互式登录的服务账户
- 系统用户 (
-r)
- UID 会从系统用户范围分配(通常是 1-999)
- 与普通登录用户(UID 从 1000 开始)区分开
- 在
useradd命令输出中不显示(静默创建)
- 无法登录 (
-s /sbin/nologin)
- 最重要的限制:这个用户不能用于登录系统
- 尝试登录时会显示 “This account is currently not available” 并立即退出
为什么需要这样的用户?
- 安全性:服务以非特权用户身份运行,降低被入侵的风险
- 权限分离:不同服务使用不同用户,避免权限交叉
- 审计追踪:可以追踪哪个用户/服务执行了特定操作
- 资源控制:可以为不同服务用户设置资源限制
1.2 相关文件说明
1.2.1 /etc/passwd
存储了系统上所有用户账户的基本信息
[root@bogon ~]# tail -2 /etc/passwd
zlp:x:1000:1000::/home/zlp:/bin/bash
sxy:x:995:995::/home/sxy:/sbin/nologinzlp	:	x	:	1000	:	1000	:	:	/home/zlp:	/bin/bash1		2		  3			  4		  5        6           71.用户名2.用户密码占位3.uid4.gid5.用户个人信息6.用户家目录7.用户可执行的脚本
1.2.2 /etc/shadow
存储用户密码信息和账户过期策略的安全文件
1.#查看文件
[root@bogon ~]# tail -2 /etc/shadow
zlp:!!:20391:0:99999:7:::
lisi:!!:20391::::::2.#设置zlp用户密码(123)输入密码不显示
[root@bogon ~]# passwd zlp
Changing password for user zlp.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.3#.查看文件变化
[root@bogon ~]# tail -2 /etc/shadow
zlp:$6$rounds=100000$sk4dwbiiuy1J33eY$CA.mcCWIXkZNHUs8TiLTsJLYdgcoip.WHjEO2.Pc5gqx2uIfPWeLV2UJwWoXks3wh3HnkHo16XDsampVZk7fm0:20391:0:99999:7:::
sxy:!!:20391::::::sxy	:	!!	: 20391 :	 :	 :	:	:	:
1        2      3      4   5   6   7   8   9
$ 6 
$ rounds=100000 
$ sk4dwbiiuy1J33eY $CA.mcCWIXkZNHUs8TiLTsJLYdgcoip.WHjEO2.Pc5gqx2uIfPWeLV2UJwWoXks3wh3HnkHo16XDsampVZk7fm0
(用$f分割为4个部分)1 用户名称
2 用户的密码字符串,它又分为 3 个部分2.1 加密算法	2.2 迭代次数/成本参数2.3 加密的盐2.4 是加密后的字符串
3 用户的最后一次密码修改时间
4 密码的最小时间
5 密码的最大时间
6 密码的宽限期
7 密码的警告时间
8 密码的过期时间
9 暂时没用,一个标记位
1.2.3 /etc/group
存储用户组信息的配置文件。它定义了系统中的所有用户组以及每个组的成员关系。
[root@bogon ~]# tail -2 /etc/group
zlp:x:1000:
sxy:x:995:zlp : x : 1000 :1	  2    3     41.用户组名称2.组密码点位符3.gid4.组成员列表(不包含该组的主成员)
1.2.4 /etc/gshadow
存储用户组安全信息的配置文件
[root@bogon ~]# tail -2 /etc/gshadow
zlp:!::
sxy:!::sxy	:	!	:	:1     2     3    41.组名称2.加密的组密码3.组管理员列表(组管理员可以添加/删除普通成员,但不能修改组密码或管理员列表)4.组成员列表
1.3修改用户
用usermod,查看语法
[root@bogon ~]# usermod --help
Usage: usermod [options] LOGINOptions:-b, --badname                 allow bad names-c, --comment COMMENT         new value of the GECOS field-d, --home HOME_DIR           new home directory for the user account-e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE-f, --inactive INACTIVE       set password inactive after expirationto INACTIVE-g, --gid GROUP               force use GROUP as new primary group-G, --groups GROUPS           new list of supplementary GROUPS-a, --append                  append the user to the supplemental GROUPSmentioned by the -G option without removingthe user from other groups-h, --help                    display this help message and exit-l, --login NEW_LOGIN         new value of the login name #改用户名-L, --lock                    lock the user account-m, --move-home               move contents of the home directory to thenew location (use only with -d)-o, --non-unique              allow using duplicate (non-unique) UID-p, --password PASSWORD       use encrypted password for the new password-R, --root CHROOT_DIR         directory to chroot into-P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files-s, --shell SHELL             new login shell for the user account-u, --uid UID                 new UID for the user account #改uid-U, --unlock                  unlock the user account-v, --add-subuids FIRST-LAST  add range of subordinate uids-V, --del-subuids FIRST-LAST  remove range of subordinate uids-w, --add-subgids FIRST-LAST  add range of subordinate gids-W, --del-subgids FIRST-LAST  remove range of subordinate gids-Z, --selinux-user SEUSER     new SELinux user mapping for the user accounteg:
1.#修改账户名  -l
[root@bogon ~]# usermod -l zhoulanping zlp2.#id命令查不到
[root@bogon ~]# id zhoulanpinng
id: ‘zhoulanpinng’: no such user3.#改家目录3.1#验证原家目录
[root@bogon ~]# ls /home
zlp  3.2#改
[root@bogon ~]# usermod -d /home/zhoulanping -m zhoulanping3.3#看现家目录
[root@bogon ~]# ls /home
zhoulanpingQ:id查不到
id命令依赖 /etc/passwd文件中的完整用户信息。
当只改了用户名 (zlp→ zhoulanping) 但没更新家目录时,系统可能没有完整注册新用户。
1.4删除用户账号
用userdel,语法如下:
[root@bogon ~]# userdel --help
Usage: userdel [options] LOGINOptions:-f, --force                   force some actions that would fail otherwisee.g. removal of user still logged inor files, even if not owned by the user-h, --help                    display this help message and exit-r, --remove                  remove home directory and mail spool-R, --root CHROOT_DIR         directory to chroot into-P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files-Z, --selinux-user            remove any SELinux user mapping for the user
eg:
1.#
[root@bogon ~]# userdel zhoulanping
[root@bogon ~]# id zhoulanping
id: ‘zhoulanping’: no such user2#但家目录还在
[root@bogon ~]# ls /home
zhoulanping3#查看相关文件是否有记录
[root@bogon ~]# tail -2 /etc/passwd
chrony:x:996:996:chrony system user:/var/lib/chrony:/sbin/nologin
sxy:x:995:995::/home/sxy:/sbin/nologin[root@bogon ~]# tail -2 /etc/shadow
chrony:!!:20389::::::
sxy:!!:20391::::::[root@bogon ~]# tail -2 /etc/group
zlp:x:1000:
sxy:x:995:[root@bogon ~]# tail -2 /etc/shadow
chrony:!!:20389::::::
sxy:!!:20391::::::[root@bogon ~]# tail -2 /etc/gshadow
zlp:!::
sxy:!::
[root@bogon ~]# ls /var/spool/mail/zhoulanping
/var/spool/mail/zhoulanping[root@bogon ~]# ls -a /etc/skel/zhoulanping
ls: cannot access '/etc/skel/zhoulanping': No such file or directory4.#删干净
[root@bogon ~]# userdel -r zhoulanping
userdel: user 'zhoulanping' does not exist
[root@bogon ~]# userdel -r -f zhoulanping
userdel: user 'zhoulanping' does not exist
#现在用户已经删除,不能用改命令删除了#手动删除
/etc/group 和 /etc/gshadow文件:可以去vim编辑模式下直接清理(不要动其他的)
邮件可以直接删
[root@bogon ~]# rm -f /var/spool/mail/zhoulanping 
[root@bogon ~]# 根据您的检查结果,总结如下:
用户文件状态总结
| 文件 | 状态 | 说明 | 
|---|---|---|
| /etc/passwd | ✅ 无记录 | 用户已删除 | 
| /etc/shadow | ✅ 无记录 | 密码信息已删除 | 
| /etc/group | ❌ 有残留 | 组 zlp:x:1000:还存在 | 
| /etc/gshadow | ❌ 有残留 | 组 zlp:!::还存在 | 
| /var/spool/mail/zhoulanping | ❌ 有残留 | 邮件文件还存在 | 
| 家目录 | ✅ 已删除 | 无家目录残留 | 
1.5 组管理
创建组,有2个文件自动生成一条记录:
1./etc/group
2./etc/gshadow
1.5.1 创建组
groupadd命令,相关语法:
[root@bogon ~]# groupadd --help
Usage: groupadd [options] GROUPOptions:-f, --force                   exit successfully if the group already exists,and cancel -g if the GID is already used-g, --gid GID                 use GID for the new group-h, --help                    display this help message and exit-K, --key KEY=VALUE           override /etc/login.defs defaults-o, --non-unique              allow to create groups with duplicate(non-unique) GID-p, --password PASSWORD       use this encrypted password for the new group-r, --system                  create a system account-R, --root CHROOT_DIR         directory to chroot into-P, --prefix PREFIX_DI        directory prefix-U, --users USERS             list of user members of this groupeg:
[root@bogon ~]# groupadd GroupOne
#相关文件
[root@bogon ~]# tail -1 /etc/group
GroupOne:x:1001:
[root@bogon ~]# tail -1 /etc/gshadow
GroupOne:!::
1.5.2 修改组
用命令groupmod,相关格式:
[root@bogon ~]# groupmod --help
Usage: groupmod [options] GROUPOptions:-a, --append                  append the users mentioned by -U option to the group without removing existing user members-g, --gid GID                 change the group ID to GID-h, --help                    display this help message and exit-n, --new-name NEW_GROUP      change the name to NEW_GROUP-o, --non-unique              allow to use a duplicate (non-unique) GID-p, --password PASSWORD       change the password to this (encrypted)PASSWORD-R, --root CHROOT_DIR         directory to chroot into-P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files-U, --users USERS             list of user members of this groupeg:
1.#改组名
[root@bogon ~]# groupmod -n Group1 GroupOne 
[root@bogon ~]# id Group1
[root@bogon ~]# grep Group1 /etc/group
Group1:x:1001:2.#改gid
[root@bogon ~]# groupmod -g 1002 Group1
[root@bogon ~]# grep 1002 /etc/group
Group1:x:1002:1.5.3 删除组
[root@bogon ~]# groupdel Group1 
#相关文件自动删除
[root@bogon ~]# grep Group1 /etc/group
[root@bogon ~]# grep Group1 /etc/gshadow组删除自动清理的文件
| 文件 | 是否自动删除记录 | 说明 | 
|---|---|---|
| /etc/group | ✅ 自动删除 | 组基本信息记录自动删除 | 
| /etc/gshadow | ✅ 自动删除 | 组安全信息记录自动删除 | 
