Linux 用户与组管理超全实战教程(含故障排错 + 综合实验)
Linux用户和组管理
一、前言:为什么要学用户和组管理?🥳
- Linux 多用户操作系统核心特性
- 权限隔离、安全管控、业务账号分离实际场景
- 本文学习收获:命令实操、配置文件解析、故障修复、综合实验
二、用户和组介绍
2.1 用户介绍
用户帐户是系统安全的基础。 系统上的每个进程(运行程序)都以特定用户身份运行。 每个文件都有一个特定用户作为其所有者。 文件所有权有助于系统对文件用户实施访问控制。正在运行的进程关联的用户确定该进程可访问的文件和目录。用户使用username标识并使其更易于使用。在内部,系统通过分配给它们的唯一标识号,用户ID或UID来区分用户帐户。 如果用户使用用户帐户,则通常会为其分配一个密码,用户在登录时将使用该密码来证明他们是实际的授权用户。
用户帐户主要有三种类型:
- superuser:用于管理系统,用户名称为root,UID为0,对系统具有完全访问权限。
- system users:系统具有系统用户帐户,由提供支持服务的进程使用。 这些进程或守护进程通常不需要以超级用户身份运行。 它们是非特权帐户,用户保护自己文件和其他资源。系统用户帐户不用于交互方式登录系统。
- regular users:大多数用户拥有常规用户帐户,用于日常工作。
2.2 passwd 文件
/etc/passwd 文件保存操作系统登录用户信息。每行包含一个登录用户信息,以冒号分隔七个域。
格式:
name:password:UID:GID:GECOS:directory:shell
示例:
liulele:x:1000:1000:liulele:/home/liulele:/bin/bash
解释如下:
- name:用户登录名
- password:用户密码,以x表示
- UID:用户ID
- GID:用户主组ID
- GECOS:用户描述信息,通常为用户的真实姓名
- directory:用户主目录,启动shell时的工作目录,默认位于/home/username
- shell:用户打开终端时运行的程序,默认是shell。
对于system user,它的shell是/sbin/nologin。
2.3 group 文件
**组是用户的集合,组中用户继承组权限。**与用户一样,组具有组名称以使其更易于使用。系统通过分配给它们的唯一标识号,组ID或GID来区分组。
/etc/group 文件保存操作系统组信息。每行包含一个组信息,以冒号分隔4个域。
格式:
group_name:password:GID:user_list
示例:
liulele@centos7 ~ 15:36:32]$ grep wheel /etc/group
wheel:x:10:liulele
解释如下:
- group_name:组名称
- password:组密码,用x表示
- GID:组ID,唯一表示组
- user_list:作为补充的成员
2.4 组的类型
-
主要组:每个用户只有一个主要组,/etc/passwd 文件中的GID编号定义。 默认情况下,**用户创建的新文件组所有者为用户的主要组。**通常,在创建新的常规用户时,会创建一个与该用户同名的新组。该组用作新用户的主要组,该用户是此用户专用组的唯一成员,有助于简化文件权限管理。
-
补充组:用户还可以拥有补充组。 补充组的成员资格由/etc/group文件确定。 根据用户的任何组是否具有访问权限,授予用户访问权限的权限。例如,如果用户user01具有主要组user01和补充组wheel和webadmin,则该用户可以读取这三个组中任何一个组可读的文件。
# 查看用户信息 [liulele@centos7 ~ 16:52:44]$ id uid=1000(liulele) gid=1000(liulele) 组=1000(liulele),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 #查看用户uid [liulele@centos7 ~ 16:56:47]$ id -u liulele 1000
三 、本地用户管理:从创建到删除全流程👨💻
3.1 whoami命令
查看当前终端中登录的用户。
[root@centos7 ~ 17:03:36]# whoami
root
3.2 who 和 w 命令
查看当前系统中所有终端上登录的用户,以及用户登录的时间。
[liulele@centos7 ~ 17:04:31]$ who
liulele pts/0 2026-07-18 14:10 (10.1.8.1)
zhangmeili :0 2026-07-18 09:52 (:0)
root pts/1 2026-07-18 15:22 (10.1.8.1)
[liulele@centos7 ~ 17:04:35]$ w
17:04:41 up 7:19, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
liulele pts/0 10.1.8.1 14:10 1:23m 0.21s 0.25s sshd: liulele
zhangmei :0 :0 09:52 ?xdm? 2:57 0.27s /usr/libexec/
root pts/1 10.1.8.1 15:22 1.00s 0.10s 0.02s w
3.3 users 命令
查看当前系统中所有终端上登录的用户名。
[liulele@centos7 ~ 17:04:41]$ users
liulele root zhangmeili
3.4 useradd 命令
作用:创建用户
# -u uid
# -p 设置密码
# -d 用户的家目录
# -c 描述信息
# -g 用户的主组
# -s 用户shell程序
#用户01创建
[root@centos7 ~ 17:09:49]# useradd user01
[root@centos7 mail 17:10:32]# grep user01 /etc/passwd
user01:x:1004:1004::/home/user01:/bin/bash
#用户02创建
[root@centos7 ~ 17:14:34]# useradd -u 8888 -d /opt/user02 -c "user software manage" -g wheel -s /sbin/nologin user02
#查看是否创建成功
[root@centos7 ~ 17:15:00]# grep user02 /etc/passwd
user02:x:8888:10:user software manage:/opt/user02:/sbin/nologin
# 创建一个没有密码的账户,该用户在图形化界面中可以直接登录
[root@centos7 ~ 17:15:10]# useradd -p ' ' tom
#查看是否创建成功
[root@centos7 ~ 17:16:12]# grep tom /etc/passwd
tom:x:8889:8889::/home/tom:/bin/bash
#查看tom用户的密码,为空
[root@centos7 ~ 17:16:24]# grep tom /etc/shadow
tom: :20652:0:99999:7:::
3.5 /etc/skel/目录
新用户家目录中的文件来源于 /etc/skel/ 目录。
/etc/skel 是系统的「用户模板目录」,新建普通用户时,系统会自动把 /etc/skel/ 下所有文件 / 目录,复制到新用户的家目录(/home/用户名),用来统一初始化用户环境。
#ls -a:显示隐藏文件,~tom:是tom用户的家目录下
[root@centos7 ~ 17:17:07]# ls -a ~tom
. .. .bash_logout .bash_profile .bashrc .mozilla
#/etc/skel是
[root@centos7 ~ 17:20:04]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .mozilla
3.6 /etc/login.defs目录
创建用户的时候,用户属性默认参数配置在 /etc/login.defs 文件。
[root@centos7 ~ 17:20:13]# vim /etc/login.defs
MAIL_DIR /var/spool/mail
UMASK 022
HOME_MODE 0700
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
# Min/max values for automatic uid selection in useradd
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
# Min/max values for automatic gid selection in groupadd
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
USERGROUPS_ENAB yes
...
3.7 usermod 命令
作用:修改用户属性。
#-u uid
#-m :move home :将家目录内容移至新位置(仅于-d一起使用)
#-d:用户新的主目录
#-s:shell程序
[root@centos7 ~ 14:35:22]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash
[root@centos7 ~ 14:37:15]# grep user02 /etc/passwd
user02:x:1008:10:user software manage:/home/user02:/bin/bash
[root@centos7 ~ 14:37:57]# su - user02
[user02@centos7 ~ 14:38:14]$ 登出
#id 查看用户分组情况
#-a:代表补充组设置user01
#-G:设置分组
[root@centos7 ~ 14:38:27]# id user02
uid=1008(user02) gid=10(wheel) 组=10(wheel)
[root@centos7 ~ 14:39:16]# usermod -aG user01 user02
[root@centos7 ~ 14:39:36]# id user02
uid=1008(user02) gid=10(wheel) 组=10(wheel),1004(user01)
3.8 userdel 命令
#正常删除
[root@centos7 ~ 14:46:52]# useradd user03
[root@centos7 ~ 14:47:08]# userdel user03
#强制删除
[root@centos7 ~ 14:47:22]# userdel user02
userdel: user user02 is currently used by process 2254
[root@centos7 ~ 14:49:51]# id user02
uid=1008(user02) gid=10(wheel) 组=10(wheel),1004(user01)
#尽量不要强制删除,要找到原因
[root@centos7 ~ 14:50:03]# userdel -f user02
userdel: user user02 is currently used by process 2254
[root@centos7 ~ 14:53:45]# id user02
id: user02: no such user
#注意无论是强制删除还是正常删除,家目录和邮件还会存留用户的信息
#/home
#/var/mail
[root@centos7 ~ 14:55:07]# ls /home
liulele tom user01 user02 user03 zhangmeili
[root@centos7 ~ 14:55:21]# ls /var/mail/
liulele root rpc tom user02 user03
[root@centos7 home 15:00:32]# rm -rf user03 user02
[root@centos7 mail 15:01:02]#rm -rf user03 user02
3.9 练习(动手吧)📝
-
创建 operator1 用户
[root@centos7 ~ 17:11:28]# useradd operator1 -
使用 id 验证 operator1 用户信息
[root@centos7 ~ 17:11:49]# id operator1 uid=8890(operator1) gid=8890(operator1) 组=8890(operator1) -
查看 /etc/passwd 中对应条目
[root@centos7 ~ 17:11:58]# grep operator1 /etc/passwd operator1:x:8890:8890::/home/operator1:/bin/bash -
密码设置为123
#交互式修改 [root@centos7 ~ 17:15:07]# usermod -p '123' operator1 #非交互式修改 [root@centos7 ~ 17:14:04]# echo '123' |passwd operator1 --stdin 更改用户 operator1 的密码 。 passwd:所有的身份验证令牌已经成功更新。 -
修改 operator1 用户uid为1088
-
修改 operator1 用户描述信息为"Operator One"
#usrmod修改用户信息 #-u :uid # -c 描述信息,注意内容加"" [root@centos7 ~ 17:17:34]# usermod operator1 -u 1088 -c "Operator One" [root@centos7 ~ 17:18:04]# grep operator1 /etc/passwd operator1:x:1088:8890:Operator One:/home/operator1:/bin/bash -
将 wheel 组作为补充组添加给 operator1 用户
#id查看用户的分组情况 [root@centos7 ~ 17:18:18]# id operator1 uid=1088(operator1) gid=8890(operator1) 组=8890(operator1) #-a是补充的意思 #G是用户组的意思 #注意参数1 是需要补充的用户内容,参数二是用户 [root@centos7 ~ 17:19:06]# usermod -aG wheel operator1 [root@centos7 ~ 17:19:27]# id operator1 uid=1088(operator1) gid=8890(operator1) 组=8890(operator1),10(wheel) -
查看 /etc/group 中对应条目
[root@centos7 ~ 17:19:53]# grep operator1 /etc/group wheel:x:10:liulele,operator1 operator1:x:8890: -
删除 operator1 用户
#userdel删除用户 #-f 强制删除 [root@centos7 ~ 17:20:07]# userdel operator1 userdel: user operator1 is currently used by process 10188 #这里强制删除出现说operator1表示正在使用,但是已经删除了。 [root@centos7 ~ 17:21:32]# userdel -f operator1 userdel: user operator1 is currently used by process 10188 #id 用户名:查看用户的分组情况 [root@centos7 ~ 17:21:57]# id operator1 id: operator1: no such user #虽然用户已经被删除了,但是再家目录/home下用户文件还是存在的 [root@centos7 ~ 17:30:24]# ls /home laowang liulele operator1 tom user01 [root@centos7 ~ 17:30:54]# cd /home/ #需手动删除 [root@centos7 home 17:31:13]# rm -rf operator1/ [root@centos7 home 17:31:21]# ls #邮件也需要删除 [root@centos7 ~ 09:15:34]# ls /var/spool/mail/ laowang liulele operator1 rpc tom user01 [root@centos7 ~ 09:21:22]# rm -rf /var/spool/mail/operator1
3.10 进阶硬核实验:不使用 useradd,手动创建用户🤯
很多面试会问到:useradd 底层到底改了哪些文件?我们手动修改四大配置文件,复刻用户创建全过程,吃透底层原理!
# 步骤1:添加账户
# 编辑passwd添加用户条目,UID、GID不能重复
[root@centos7 ~ 15:01:06]# vim /etc/passwd
#最后一行添加如下内容,注意uid要在原有的基础上增加1
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
# 步骤2:添加组
[root@centos7 ~ 15:07:59]# vim /etc/group
# 最后一行添加如下内容
zhangsan:x:1001:
# 步骤3:添加密码
[root@centos7 ~ 15:10:50]# vim /etc/shadow
# 最后一行添加如下内容
# 而这里写的是空密码
zhangsan:::0:99999:7:::
# 步骤4:复制系统骨架目录skel生成家目录
[root@centos7 ~ 15:17:54]# cp -r /etc/skel/ /home/zhangsan
# 步骤5:修改家目录归属用户和组
[root@centos7 ~ 15:22:27]# ls -ld /home/zhangsan
drwxr-xr-x. 3 root root 78 7月 19 15:19 /home/zhangsan
[root@centos7 ~ 15:23:16]# chown zhangsan:zhangsan /home/zhangsan
[root@centos7 ~ 15:23:32]# ls -ld /home/zhangsan
drwxr-xr-x. 3 zhangsan zhangsan 78 7月 19 15:19 /home/zhangsan
# 测试登录验证
ssh zhangsan@localhost
#vim /etc/passwd
#vim /etc/group
#vim /etc/shadow
3.11 三大登录故障模拟 + 一键修复🛠️
故障 1:登录后提示符变成 bash-4.2$
现象:丢失用户名、主机名、路径提示符,只有基础 bash 标识
原因:/etc/bashrc 全局 shell 配置文件缺失,nologin shell打开的时候执行 /etc/bashrc 配置,登录 shell 无法加载环境变量
模拟:
#echo 打印显示,mv这里是用作重命名
[root@centos7 ~ 15:31:32]# echo mv /etc/bashrc{,.ori}
mv /etc/bashrc /etc/bashrc.ori
[root@centos7 ~ 15:32:23]# mv /etc/bashrc{,.ori}
[root@centos7 ~ 15:32:34]# bash
bash-4.2#
恢复:
bash-4.2# mv /etc/bashrc{.ori,}
bash-4.2# bash
[root@centos7 ~ 15:34:31]#
故障 2:误删家目录,登录提示 No such file or directory
报错:Could not chdir to home directory /home/zhangsan: No such file or directory
模拟:
[root@centos7 ~ 15:34:47]# rm -rf /home/zhangan
#登录zhangsan用户
解决
[root@centos7 ~ 15:37:39]# cp -r /etc/skel/ /home/zhangsan/
[root@centos7 ~ 15:38:53]# chown zhangsan:zhangsan /home/zhangsan/
故障 3:家目录权限不足 Permission denied
报错:无法切换到家目录、无法读取.bash_profile
模拟:移除用户自身读写执行权限
[root@centos7 ~ 15:42:35]# chmod u=- /home/zhangsan
[root@centos7 ~ 15:42:43]# ls -ld /home/zhangsan
d---r-xr-x. 6 zhangsan zhangsan 119 7月 19 15:38 /home/zhangsan
修复:递归修正归属 + 重置目录权限
[root@centos7 ~ 15:42:51]# chown -R zhangsan:zhangsan /home/zhangsan
[root@centos7 ~ 15:43:19]# chmod u=rxw /home/zhangsan
#或者 标准用户家目录权限推荐700
[root@centos7 ~ 15:43:19]# chmod 700 /home/zhangsan
[root@centos7 ~ 15:43:38]# ls -ld /home/zhangsan
drwxr-xr-x. 6 zhangsan zhangsan 119 7月 19 15:38 /home/zhangsan
四、本地组管理:批量管控用户权限👥
用户组作用:将多个业务用户放入同一组,统一设置文件 / 目录权限,不用逐个修改用户权限,批量管理超省心!核心配置文件 /etc/group。
4.1 groupadd命令
创建用户组
# 创建名称为admin的组
[root@centos7 ~ 15:45:36]# groupadd admin
# 指定GID=2000创建sysadmin组
[root@centos7 ~ 16:00:20]# groupadd sysadmin -g 2000
# 验证组信息
[root@centos7 ~ 16:02:42]# grep admin /etc/group
printadmin:x:997:
admin:x:1002:
sysadmin:x:2000:
4.2 groupmod 修改组属性
# 修改组名称
[root@centos7 ~ 16:03:03]# groupmod --new-name admins admin
# 修改组id
[root@centos7 ~ 16:11:03]# groupmod -g 2002 admins
# 验证
[root@centos7 ~ 16:11:11]# grep admin /etc/group
printadmin:x:997:
sysadmin:x:2000:
admins:x:2002:
4.3 groupdel 命令
[root@centos7 ~ 16:11:58]# groupdel sysadmin
[root@centos7 ~ 16:13:40]# grep sysadmin /etc/group
4.4 groupmems 命令
精细化管理组内成员✨
专门用来增删、清空、查看组内用户,无需反复使用 usermod 附属组参数,操作更简洁!
[root@centos7 ~ 16:16:02]# groupmems --help
用法:groupmems [选项] [动作]
选项:
-g, --group groupname 更改组 groupname,而不是用户的组(只 root)
-R, --root CHROOT_DIR chroot 到的目录
动作:
-a, --add username 将用户 username 添加到组成员中
-d, --delete username 从组的成员中删除用户 username
-h, --help 显示此帮助信息并推出
-p, --purge 从组中移除所有成员
-l, --list 列出组中的所有成员
# 添加成员
[root@centos7 ~ 16:16:19]# groupmems -g admins -a liulele
[root@centos7 ~ 16:17:35]# groupmems -g admins -l
liulele
[root@centos7 ~ 16:17:47]# id liulele
uid=1000(liulele) gid=1000(liulele) 组=1000(liulele),10(wheel),2002(admins)
# 删除成员
[root@centos7 ~ 16:17:58]# groupmems -g admins -d liulele
[root@centos7 ~ 16:18:31]# groupmems -g admins -l
#清空组中所有成员
[root@centos7 ~ 16:18:45]# groupmems -g admins -a liulele
[root@centos7 ~ 16:19:43]# groupmems -g admins -p
4.5 练习(动手吧)📝
-
创建developer组,组id为2000
[root@centos7 ~ 16:23:02]# groupdel developer [root@centos7 ~ 16:23:37]# groupadd developer -g 2000 [root@centos7 ~ 16:23:53]# grep deve /etc/group developer:x:2000: -
修改developer组名称为developer1,组id为3000
[root@centos7 ~ 16:24:16]# groupmod --new-name developer1 developer [root@centos7 ~ 16:25:51]# groupmod developer1 -g 3000 [root@centos7 ~ 16:26:31]# grep deve /etc/group developer1:x:3000: -
创建liudoudou用户,并添加到组developer1
[root@centos7 ~ 16:26:51]# useradd liudoudou [root@centos7 ~ 16:32:36]# groupmems -g developer1 -a liudoudou [root@centos7 ~ 16:28:42]# id liudoudou uid=1002(liudoudou) gid=3000(developer1) 组=3000(developer1) -
将liudoudou用户从组developer1中删除
[root@centos7 ~ 16:32:57]# groupmems -g developer1 -d liudoudou [root@centos7 ~ 16:33:20]# id liudoudou uid=1002(liudoudou) gid=1002(liudoudou) 组=1002(liudoudou) -
删除组developer1
[root@centos7 ~ 16:33:33]# groupdel developer1
[root@centos7 ~ 16:34:41]# grep developer1 /etc/group
五、密码深度管理:shadow 文件与账号安全策略🔐
5.1 /etc/shadow 密码影子文件详解
/etc/shadow 文件保存操作系统登录用户密码信息。
每行包含一个登录用户信息,以冒号分隔九个域。
示例:
[root@centos7 ~ 11:10:19]# grep liulele /etc/shadow
liulele:$6$hhZq7eHV$4bu30L5L5FOMyFWYVFHMXUKydKuXjw9OmgKjSwLDwUGZCqvV0Fd3RKOmv5fWLxEeZXIIbJXZWLKwGHfGFiwlO/:20649:0:99999:7:::
解释如下:
- login name:用户登录名。
- encrypted password:加密的密码。
- date of last password change:上一次密码更改日期,以距离1970-1-1过去的天数表示。设置为0,强制用户下次登录时更改密码。
- minimum password age:最小密码生命周期。设置为0,密码可以随时更改。
- maximum password age:最大密码生命周期。
- password warning period:密码过期前,提前多少天告警。设置为0,不提示过期。
- password inactivity period:密码过期后,非活跃天数,在期间密码仍可以使用。
- account expiration date:账户过期时间,以距离1970-1-1过去的天数表示。
- reserved field:保留域。
chage 命令

[root@centos7 ~ 10:35:58]# chage -l liulele
最近一次密码修改时间 :7月 15, 2026
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数
#-M 设置最大时间
[root@centos7 ~ 11:14:42]# chage -M 100 liulele
[root@centos7 ~ 11:14:48]# chage -l liulele
最近一次密码修改时间 :7月 15, 2026
密码过期时间 :10月 23, 2026
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
#-m设置最小时间
[root@centos7 ~ 11:14:56]# chage -m 10 liulele
[root@centos7 ~ 11:15:12]# chage -l liulele
最近一次密码修改时间 :7月 15, 2026
密码过期时间 :10月 23, 2026
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
#-W设置密码过去时间警告天数,7天内不更改就自动锁定
[root@centos7 ~ 11:21:43]# chage -W 7 liulele
[root@centos7 ~ 11:22:04]# chage -l liulele
最近一次密码修改时间 :7月 15, 2026
密码过期时间 :10月 23, 2026
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
#-d 0
#-d:全称 --lastday,代表密码最后一次修改的日期
#0:Linux 系统中,日期以1970-01-01(Unix 时间戳起点)为第 0 天
#效果:把用户密码的最后修改时间设为系统原点,系统判定密码已过期
[root@centos7 ~ 11:22:13]# chage -d 0 liulele
#-E 设置用户账户过期时间是过去的一个时间,以便锁定用户账户
#这里的时间是已经账户时间过期了,用户liulele登录就会失败
[root@centos7 ~ 11:26:28]# chage -E 2026-7-17 liulele
[root@centos7 ~ 11:26:45]# chage -l liulele
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :7月 17, 2026
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
#-E是设置用户账户过期时间是过去的一个时间,以便锁定用户账户
#-M 最大时间
# -m 最小时间
#-1 设置永久时间
[root@centos7 ~ 11:43:40]# chage -E -1 liulele
[root@centos7 ~ 11:43:40]# chage -M 9999 liulele
[root@centos7 ~ 11:43:40]# chage -m 0 liulele
[root@centos7 ~ 11:46:12]# chage -l liulele
最近一次密码修改时间 :7月 18, 2026
密码过期时间 :永不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :9999
在密码过期之前警告的天数 :7


5.2 usermod -p 更改用户密码
[root@centos7 ~ 11:41:05]# usermod -p ' ' liulele
[root@centos7 ~ 11:43:05]# usermod -p '123' liulele
#或者非交互型更改
[root@centos7 ~ 11:43:11]# echo '123' |passwd --stdin liulele
更改用户 liulele 的密码 。
passwd:所有的身份验证令牌已经成功更新。
5.3 usermod -s 限定用户shell(两种禁止登录方案)
场景:后台程序账号、数据库账号,不需要交互式登录
方法一:修改 shell 为 /sbin/nologin
[root@centos7 ~ 12:40:09]# usermod -s /sbin/nologin liulele
[root@centos7 ~ 12:40:24]# su -l liulele
上一次登录:六 7月 18 12:39:37 CST 2026pts/1 上
This account is currently not available.
#恢复登录权限
[root@centos7 ~ 12:40:30]# usermod -s /bin/bash liulele
5.4 usermod -L 锁定用户密码
方案 2:锁定用户密码(usermod -L /passwd -l)
[root@centos7 ~ 12:40:52]# usermod -L liulele
[root@centos7 ~ 12:44:12]# su - liulele
Password:
su: Authentication failure
5.5 usermod -U 解锁用户密码
等效于passwd -u
[root@centos7 ~ 12:45:56]# usermod -U liulele
[root@centos7 ~ 12:45:56]# su - liulele
Password:
[liulele@centos7 ~ 12:47:24]$
5.6 passwd -d 删除密码
用户登录的时候,输入用户名即可登录。
# 删除用户密码即可
[root@centos7 ~ 12:48:23]# passwd -d liulele
清除用户的密码 liulele。
passwd: 操作成功
5.7 设置账户过期
等效于passwd -e
# 设置账户过期时间为过去的某一个日期
[root@centos7 ~ 12:48:42]# usermod -e 2026-7-15 liulele
#或者
[root@centos7 ~ 12:48:42]# chage -E 2026-7-15 liulele
5.8 增加一个 uid 为 0 的用户
方法一
[root@centos7 ~ 12:50:19]# vi /etc/passwd
# 将自己的用户id该为0,此时liulele用户可以行使root权限了
liulele:x:0:1000:liulele:/home/liulele:/bin/bash
方法二
liubing和 root 账户是两个不同的账户,但是laoma用户获得了root账户权限。
[root@centos7 ~ 12:54:04]# useradd -o -u 0 liubing
[root@centos7 ~ 12:54:09]# id liubing
uid=0(root) gid=0(root) 组=0(root)
动手
- 添加用户 laowang,设置密码与laoma用户一致。(不允许使用passwd命令)
- 设置 laowang 密码: - 首次登录必须修改密码 - 3天内不允许修改 - 100天后过期
- 禁止 laowang 登录系统,至少使用2种方法。
5.9 、系统 Shell 拓展与 tmux 小工具🖥️
- 查看系统全部可用 Shell
[root@centos7 ~ 16:35:08]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
# sh是bash软链接
[root@centos7 ~ 20:19:36]# ls -l /bin/sh /usr/bin/sh
lrwxrwxrwx. 1 root root 4 7月 14 10:27 /bin/sh -> bash
lrwxrwxrwx. 1 root root 4 7月 14 10:27 /usr/bin/sh -> bash
-
安装拓展 shell
# csh/tcsh [root@centos7 ~ 20:26:05]# yum install -y tcsh # 终端复用工具tmux [root@centos7 ~ 20:24:07]# yum install -y tmux [root@centos7 ~ 20:26:22]# ll /bin/csh /usr/bin/tcsh lrwxrwxrwx. 1 root root 4 7月 14 10:31 /bin/csh -> tcsh -rwxr-xr-x. 1 root root 404632 11月 17 2020 /usr/bin/tcsh -
tmux 基础快捷键(前缀 Ctrl+b)⌨️
- c:新建窗口会话
- 数字键:切换对应编号会话
总结📚
- 掌握三大核心文件:
/etc/passwd用户信息、/etc/group分组、/etc/shadow加密密码与密码周期。 - 用户 / 组全套命令:增删改查用户、自定义 GID/UID、批量管理组成员。
- 密码安全:
chage管控有效期,多种锁定、免交互改密方式,禁用登录两种方案。 - 三大登录故障:提示符异常、家目录丢失、权限不足,熟记修复步骤。
- 安全提醒:禁止多 UID=0 账号,后台程序 Shell 设为
/sbin/nologin,规范密码策略。 - 拓展:系统各类 Shell、tmux 简易终端复用操作。
n/sh /usr/bin/sh
lrwxrwxrwx. 1 root root 4 7月 14 10:27 /bin/sh -> bash
lrwxrwxrwx. 1 root root 4 7月 14 10:27 /usr/bin/sh -> bash
2. 安装拓展 shell
~~~bash
# csh/tcsh
[root@centos7 ~ 20:26:05]# yum install -y tcsh
# 终端复用工具tmux
[root@centos7 ~ 20:24:07]# yum install -y tmux
[root@centos7 ~ 20:26:22]# ll /bin/csh /usr/bin/tcsh
lrwxrwxrwx. 1 root root 4 7月 14 10:31 /bin/csh -> tcsh
-rwxr-xr-x. 1 root root 404632 11月 17 2020 /usr/bin/tcsh
- tmux 基础快捷键(前缀 Ctrl+b)⌨️
- c:新建窗口会话
- 数字键:切换对应编号会话
总结📚
- 掌握三大核心文件:
/etc/passwd用户信息、/etc/group分组、/etc/shadow加密密码与密码周期。 - 用户 / 组全套命令:增删改查用户、自定义 GID/UID、批量管理组成员。
- 密码安全:
chage管控有效期,多种锁定、免交互改密方式,禁用登录两种方案。 - 三大登录故障:提示符异常、家目录丢失、权限不足,熟记修复步骤。
- 安全提醒:禁止多 UID=0 账号,后台程序 Shell 设为
/sbin/nologin,规范密码策略。 - 拓展:系统各类 Shell、tmux 简易终端复用操作。
更多推荐



所有评论(0)