rd.break是rhel系系统重置root密码的官方推荐方法,需在grub编辑界面将linux16行末的ro替换为rw rd.break,再依次执行mount -o remount,rw /sysroot、chroot /sysroot、passwd root及touch /.autorelabel(selinux启用时必需),最后双exit重启。

root 密码重置不需要重装系统,只要能物理/控制台访问(比如虚拟机控制台、云服务器 VNC),就能在 GRUB 阶段干预启动流程完成。关键不是“能不能”,而是“用对参数”——错一个字符,就进不了救援环境。
rd.break 方案:CentOS 7/8、Rocky、Alma、openEuler 等 systemd+dracut 系统首选
这是 RHEL 系列新版官方推荐方式,SELinux 开启时也稳定生效。
常见错误现象:switch_root: cannot access /sysroot: No such file or directory —— 没执行 chroot /sysroot 就直接跑 passwd;或挂载前没改 ro 为 rw rd.break。
- 开机到 GRUB 菜单后按
e,找到以linux16或linux开头的行 - 把行尾的
ro替换为rw rd.break(注意空格,不能写成rd.break=1) - 按
Ctrl+x启动,等待进入switch_root:/# - 依次执行:
mount -o remount,rw /sysrootchroot /sysrootpasswd roottouch /.autorelabel(SELinux 必加,否则重启后密码无效)exit(两次)
init=/bin/bash 方案:Ubuntu、Debian、Arch、Fedora 及老 CentOS 通用
更直接,但风险略高——它让 /bin/bash 成为 PID 1,整个根文件系统已挂载且可写,操作失误影响更大。
使用场景:Ubuntu 22.04/24.04 默认 GRUB 隐藏菜单,需先按 Shift 或 Esc 呼出;部分云平台 VNC 键盘映射异常,Ctrl+x 失效时改用 F10。
- 编辑
linux行:把ro改成rw,并在行末追加空格+init=/bin/bash - 按
Ctrl+x启动,直接进入sh-4.4#提示符 - 执行:
mount -o remount,rw /passwd roottouch /.autorelabel(Ubuntu 默认关闭 SELinux,但若手动开启过,仍需此步)exec /sbin/init或exec /sbin/reboot -f
为什么改了密码却登录失败?重点检查这三处
这不是操作失败,而是环境细节被忽略:
-
passwd执行后没看到password updated successfully?说明输入了非法字符(如中文空格)、或密码强度策略拦截(CentOS 默认拒绝少于 8 位的密码) - 重启后仍提示认证失败?大概率漏了
touch /.autorelabel(SELinux 环境下必做),或chroot后没exit就直接reboot,导致 initramfs 未退出 - Ubuntu 24.04+ 使用
systemd-boot替代 GRUB?需长按Space进入启动菜单,再按e编辑,参数写法同init=/bin/bash
linux 参数逐字核对,而不是凭记忆敲。











