本文介绍在 CentOS 7 系统中忘记 root 密码时的重置方法。无需重装系统,通过修改启动参数进入紧急救援模式(rd.break),以读写模式挂载根分区,使用 passwd 命令重置密码,并创建 .autorelabel 文件修复 SELinux 标签,最后重启系统即可恢复登录。
一、进入系统启动菜单
- 重启 CentOS 7 服务器,开机时会出现如下启动菜单:

- 使用上下箭头选中第一个启动项(默认启动的系统内核,即 CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)),按下 e 键,进入启动参数编辑界面。
二、修改启动参数,添加紧急模式标识
在编辑界面中,找到包含 LANG=zh_CN.UTF-8 的一行(核心参数行),在后面添加空格后追加 rd.break,然后按下 ctrl+x,进入紧急救援模式。

参数说明:
- rw:让根分区以'可读写'模式挂载(默认启动是只读 ro,无法修改密码);
- rd.break:中断系统启动流程,进入紧急救援模式。
三、进入系统根目录(chroot 切换)
启动后进入紧急模式命令行,系统提示符为 switch_root:/#。

- 输入
chroot /sysroot,切换到系统真实根目录(/sysroot 是紧急模式下系统根分区的临时挂载点)。 - 执行后,命令行提示符会变成 sh-4.2#,表示已成功切换到系统真实根环境,可操作系统配置。
四、重置 root 密码
- 输入以下命令:
echo 123456 | passwd --stdin root
解读:
- echo 123456:输出新密码
- | passwd --stdin root:通过管道命令将密码传递给 passwd 命令,无需手动输入两次密码。
- 执行后若成功提示
passwd: all authentication tokens updated successfully,表示密码重置成功。
五、修复 SELinux 标签
- CentOS 7 默认启用 SELinux,修改密码后会导致 SELinux 安全标签不一致,需要手动生成自动重新标签的标记文件。 输入命令:
touch /.autorelabel
这能够使系统重启时检测到 .autorelabel 文件,自动重新生成所有文件的 SELinux 标签,避免因标签错误导致系统无法登录或服务异常。


