rd.break是centos 7/8/9重置root密码最稳妥方式:grub中编辑linux16行末尾加rd.break,ctrl+x进入紧急模式,执行mount -o remount,rw /sysroot、chroot /sysroot、passwd root,再touch /.autorelabel后重启。

直接重置 CentOS 的 root 密码不需要重装系统,也不依赖外部启动盘——只要能进 GRUB 菜单(本地控制台或虚拟机 VNC),3 分钟内就能完成。关键在于绕过正常登录流程,进入可写环境修改 /etc/shadow 中的密码哈希。
用 rd.break 中断 initramfs 挂载阶段
这是最稳妥、兼容性最好的方式,尤其适合 SELinux 启用且未被禁用的默认安装。
- 开机时在 GRUB 菜单按
e编辑启动项,找到以linux16(CentOS 7)或linux(8/9)开头的行 - 在该行末尾追加空格 +
rd.break,不要删原有参数 - 按
Ctrl+X启动,系统会在 initramfs 阶段中断,停在switch_root:提示符 - 执行
mount -o remount,rw /sysroot——因为此时/sysroot是只读挂载的真根文件系统 - 再执行
chroot /sysroot切入真实系统环境
用 init=/sysroot/bin/bash 直接跳过 systemd
适用于 GRUB 编辑后无法进入 rd.break 场景(比如某些云平台限制或内核参数冲突),但风险略高:它跳过 initramfs 完整流程,可能让 LVM/加密卷未就绪。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
- 同样在
linux16行末尾,把ro改成rw,再追加init=/sysroot/bin/bash -
Ctrl+X后会直接进入bash,提示符可能是:/# - 此时无需
mount -o remount,直接chroot /sysroot - 如果提示
chroot: cannot run command '/bin/bash': No such file or directory,说明/sysroot下没 bash,改用chroot /sysroot /bin/sh
修改密码后必须处理 SELinux 标签
忽略这步是重启后黑屏、卡登录、login: Authentication failure 的最常见原因。
- 在
chroot环境中执行passwd root,输两遍新密码,看到all authentication tokens updated successfully才算成功 - 立即执行
touch /.autorelabel——这不是可选项,是强制要求;系统下次启动时会自动触发完整 SELinux 重标记 - 退出前运行
exit(退出 chroot),再运行exec /sbin/init或reboot -f;不要直接关机或硬重启,否则.autorelabel可能不生效 - 首次重启会明显变慢(尤其大磁盘),这是 SELinux 在后台扫描打标,耐心等完再尝试登录
真正容易被忽略的不是步骤顺序,而是:所有操作都发生在内存中的临时 shell,任何对 /boot 或 /etc/default/grub 的修改都不会保存——你只是临时改了一次启动参数。另外,rd.break 和 init=... 两种方式不能混用,选一种从头走到尾;中途切命令、补参数大概率导致挂起或 panic。










