发布于2026-07-01 阅读(0)
扫一扫,手机访问
Linux 系统管理员迟早会遇到这么个场景:某天突然发现 root 密码失效了,或者刚接手一台服务器却没人知道 root 密码。别急着重装系统——只要还有物理控制台权限(比如服务器机房的键盘屏幕、虚拟机的控制台、云服务器的 VNC 通道),就可以在 GRUB 引导阶段直接干预启动流程,把密码改回来。关键不在于“能不能”,而在于“参数对不对”——错一个字符,救援环境就进不去。

其实行业里一直流传着两套主流方案,分别适用于不同的发行版和场景。下面是具体操作,以及那些容易被忽略的细节——很多人在这一步翻车。
这套方法在 RHEL 系新版上属于官方推荐,配合 SELinux 开启时也能稳定生效。常见的翻车现场是:执行 passwd 之前忘了先 chroot /sysroot,结果直接报错 switch_root: cannot access /sysroot: No such file or directory;或者挂载前没把 ro 改成 rw rd.break。
e 进入编辑模式,找到以 linux16 或 linux 开头的行ro 替换为 rw rd.break(注意前后空格,写成 rd.break=1 是不认的)Ctrl+x 启动,等待进入 switch_root:/# 提示符mount -o remount,rw /sysrootchroot /sysrootpasswd roottouch /.autorelabel(SELinux 启用的情况下这一步必须做,否则重启后密码不生效)exit(两次)这条路径更直接,但风险也略高一些——它让 /bin/bash 直接成为 PID 1,整个根文件系统已经挂载并可写,操作失误的影响范围更大。适合 Ubuntu 22.04/24.04 等系统,不过这些系统默认会隐藏 GRUB 菜单,需要在开机时按 Shift 或 Esc 才能呼出;部分云平台的 VNC 键盘映射有点怪异,Ctrl+x 可能失灵,这时候可以试试 F10。
linux 行:把 ro 改成 rw,并在行末尾加一个空格,然后追加 init=/bin/bashCtrl+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 没有正常退出,密码根本没写盘。systemd-boot 替代 GRUB?这时候需要长按 Space 进入启动菜单,再按 e 编辑,参数写法与 init=/bin/bash 一致。说到底,真正卡住人的往往不是“该怎么做”,而是“改哪一行”“空格有没有对齐”“SELinux 到底是开是关”。一次成功的秘诀很简单:盯着那一行 linux 参数,逐字核对,不要凭记忆敲——很多时候多一个空格、少一个斜杠,结局就完全不同。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9