Linux怎么重置Root密码
Linux系统可通过GRUB引导阶段重置root密码。主流方案包括rd.break(适用于CentOS7/8等)和init=/bin/bash(适用于Ubuntu等),需在编辑linux行时将ro改为rw并添加对应参数,注意SELinux环境下执行touch/.autorelabel,否则密码可能不生效。
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#提示符(取决于 bash 版本可能略有不同) - 依次执行:
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 参数,逐字核对,不要凭记忆敲——很多时候多一个空格、少一个斜杠,结局就完全不同。


































