在运维工作中,忘记 root 密码并不是罕见的事情。幸运的是,在 CentOS 7 和 CentOS 8 中,都可以通过 GRUB 引导参数进入维护模式,安全地重置 root 密码。
本文整理两种最常用、最稳定的方式,覆盖 CentOS 7 与 CentOS 8,步骤清晰、无风险操作,可作为你的日常排障手册。
一、方法一:通过 rd.break 进入紧急模式(更推荐)
rd.break 是 Red Hat 系列官方推荐的方式,通过在 GRUB 的内核启动行追加参数,使系统在 initramfs 阶段暂停,并提供一个紧急 shell。优点是流程更标准、兼容性好。
步骤 1:进入 GRUB 编辑界面
系统重启后,看到 GRUB 菜单时按"e":

CentOS 7 中通常为:linux16 开头的行
CentOS 8 中通常为:linux 开头的行
步骤 2:追加 rd.break
删除 rhgb quiet,并在该行末尾添加rd.break:

添加完成后按Ctrl + X:
系统会进入 initramfs 提示符。

步骤 3:重新挂载根文件系统为可写
默认是只读,需要先改为可写:
mount -o remount,rw /sysroot
步骤 4:切换到真实系统环境
chroot /sysroot
步骤 5:设置新的 root 密码
passwd root
步骤 6:触发 SELinux 重新标记(必须做)
touch /.autorelabel
避免重启后无法正常登录。
以下实际操作步骤以供参考:

步骤 7:退出并重启
# centos 7.x 重启
exec /sbin/init
# centos 8.x 重启
exec /usr/sbin/reboot
系统将自动重启,SELinux 会进行重新标记,等待完成即可。
二、方法二:使用 /bin/bash 进入系统 Shell
第二种方法是通过修改内核参数,让系统在启动时直接进入根文件系统的 shell,操作步骤更短,但不是官方推荐方式。对于 CentOS 7 和 CentOS 8 同样适用。
步骤 1:编辑 GRUB
在 GRUB 菜单按 e。

找到:
CentOS 7:linux16 开头
CentOS 8:linux 开头
步骤 2:将 ro 修改为 rw,删除 rhgb quiet,并追加init=/bin/bash

完成后 Ctrl + X 启动。
步骤 3:切换系统根环境
# 挂载 / 为可读写
mount -o remount,rw /
步骤 4:重置 root 密码
passwd root
步骤 5:SELinux 重新标记
touch /.autorelabel
步骤 6:重启
# centos 7.x 重启
exec /sbin/init
# centos 8.x 重启
exec /usr/sbin/reboot
三、内容小结
无论你使用的是 CentOS 7 还是 CentOS 8,只要能够进入 GRUB,就可以通过本文提供的两种方式安全地重置 root 密码:
推荐使用 rd.break:官方标准、兼容性好
init=/bin/bash:步骤简短、效率高
建议将这两种方法加入应急手册中,以备不时之需。
本文链接:https://www.kinber.cn/post/5962.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
