一、进入单用户模式或紧急模式
-
重启系统并进入 GRUB 菜单
重启服务器,在启动界面出现时按下 Esc 或 Shift 键,进入 GRUB 引导菜单。若未显示菜单,可尝试多次按键。 -
编辑启动参数
选择默认的内核启动项(通常为第一项),按下 e 键进入编辑模式。根据 CentOS 版本修改参数:- CentOS 7:找到以
linux16开头的行,将 ro 改为 rw init=/sysroot/bin/sh1。 - CentOS 8/9:找到以
linux开头的行,在行末添加 rd.break 参数。
- CentOS 7:找到以
-
启动进入维护模式
按下 Ctrl+X 或 F10 启动修改后的内核。系统将进入单用户模式(CentOS 7)或紧急模式(CentOS 8/9)。
二、重置密码
-
挂载根文件系统为可读写
在紧急模式下(CentOS 8/9),执行以下命令:mount -o remount,rw /sysrootCentOS 7 用户若已通过rw init=/sysroot/bin/sh参数启动,可跳过此步骤。 -
切换到真实根目录
执行以下命令进入系统根目录:chroot /sysroot -
修改 root 密码
使用passwd命令重置密码:passwd root按提示输入新密码(需符合复杂度要求,如至少 8 位、包含大小写字母和数字等)。若提示乱码,可先执行LANG=en切换语言。 -
更新 SELinux 上下文
执行以下命令确保 SELinux 策略生效:touch /.autorelabel此步骤在 SELinux 处于enforcing模式时必须执行,否则可能导致登录失败。
三、退出并重启系统
-
退出 chroot 环境
执行exit命令返回紧急模式或单用户模式。 -
重启系统
输入以下命令重启:reboot
四、验证新密码
系统重启后,使用新密码登录。若无法登录:
- 检查 SELinux 状态(
getenforce),若为enforcing,需重新执行touch /.autorelabel并重启。 - 确认密码复杂度是否符合策略(如
/etc/security/pwquality.conf中的配置)。
五、其他注意事项
-
物理服务器与云服务器差异
- 物理服务器:需物理访问或通过 KVM 工具操作。
- 云服务器:部分云服务商(如阿里云、AWS)提供远程密码重置功能,可通过控制台直接操作。
-
LVM 或加密文件系统
若系统使用 LVM 或加密卷,需先激活卷组(vgchange -ay)或解锁加密分区,再执行后续步骤。 -
GRUB 加密保护
若系统启用了 GRUB 密码,需先输入密码才能编辑启动项。可通过grub2-setpassword命令设置或重置。 -
救援模式备用方案
若单用户模式无法进入,可通过 CentOS 安装光盘或 U 盘启动,选择 Rescue a CentOS system 进入救援模式,挂载系统分区后重置密码。
六、密码安全建议
- 使用强密码(包含大小写字母、数字、特殊字符,长度≥8 位)。
- 定期更换密码,避免重复使用旧密码。
- 限制 root 用户远程登录,通过普通用户使用
sudo提权。