Linux重置Root密码方法

作者:技术拾光时间:2026-07-01 09:20:05浏览:524

Linux系统可通过GRUB引导阶段重置root密码。主流方案包括rd.break(适用于CentOS7/8等)和init=/bin/bash(适用于Ubuntu等),需在编辑linux行时将ro改为rw并添加对应参数,注意SELinux环境下执行touch/.autorelabel,否则密码可能不生效。

Linux 系统管理员迟早会遇到这样的场景:某天突然发现 root 密码失效,或者接手一台服务器却无人知晓 root 密码。不必急于重装系统——只要拥有物理控制台权限(如服务器机房的键盘屏幕、虚拟机的控制台、云服务器的 VNC 通道),就能在 GRUB 引导阶段直接干预启动流程,成功恢复密码。关键不在于“能不能”,而在于“参数是否准确”——错一个字符,救援环境便无法进入。

Linux重置Root密码方法

行业内一直流传着两套主流方案,分别适用于不同的发行版和场景。以下是具体操作,以及那些容易被忽略的细节——许多人在这一步出现失误。

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 /sysroot
    chroot /sysroot
    passwd root
    touch /.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 root
    touch /.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 参数,逐字核对,不要凭记忆输入——多一个空格或少一个斜杠,结局就会完全不同。