Linux系统可通过GRUB引导阶段重置root密码。主流方案包括rd.break(适用于CentOS7/8等)和init=/bin/bash(适用于Ubuntu等),需在编辑linux行时将ro改为rw并添加对应参数,注意SELinux环境下执行touch/.autorelabel,否则密码可能不生效。
Linux重置Root密码方法
时间:2026-07-01
浏览:523
文章目录
Linux 系统管理员迟早会遇到这样的场景:某天突然发现 root 密码失效,或者接手一台服务器却无人知晓 root 密码。不必急于重装系统——只要拥有物理控制台权限(如服务器机房的键盘屏幕、虚拟机的控制台、云服务器的 VNC 通道),就能在 GRUB 引导阶段直接干预启动流程,成功恢复密码。关键不在于“能不能”,而在于“参数是否准确”——错一个字符,救援环境便无法进入。

行业内一直流传着两套主流方案,分别适用于不同的发行版和场景。以下是具体操作,以及那些容易被忽略的细节——许多人在这一步出现失误。
rd.break 方案:CentOS 7/8、Rocky、Alma、openEuler 等 systemd+dracut 系统首选
这套方法在 RHEL 系新版上属于官方推荐,配合 SELinux 开启时也能稳定生效。常见的错误场景是:执行 passwd 之前忘了先 chroot /sysroot,导致报错 switch_root: cannot access /sysroot: No such file or directory;或者挂载前没有将 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。
- 在 GRUB 编辑界面找到
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一致。
归根结底,真正卡住人的往往不是“该怎么做”,而是“改哪一行”“空格是否对齐”“SELinux 是否开启”。一次成功的秘诀很简单:盯着那一行 linux 参数,逐字核对,不要凭记忆输入——多一个空格或少一个斜杠,结局就会完全不同。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。