如果 Linux 系统当前正在运行,请重新启动它。如果它尚未运行,请启动它。在启动菜单中,按“e”键编辑第一个启动项。
从 grub 选项中,找到以“linux16”开头的行并转到其末尾。在此行的末尾输入不带引号的 'rd.break',如下所示。
按“Ctrl+x”以这些选项启动。这将使用 root shell 引导到 initramfs 提示符。
在这个阶段,根文件系统以只读模式挂载到 /sysroot 并且必须以读/写 (rw) 权限重新挂载,以便我们实际进行任何更改。这是通过“mount -o remount,rw /sysroot”命令完成的。
重新挂载文件系统后,更改为 chroot jail,以便将 /sysroot 用作文件系统的根目录。这是必需的,以便我们运行的任何进一步命令都与 /sysroot 有关。这是通过运行“chroot /sysroot”来完成的。
从这里可以使用“passwd”命令重置 root 密码。
如果我们没有使用 SELinux,此时我们可以重新启动,一切都会好起来的,但是默认情况下 CentOS/RHEL 7 在强制模式下使用 SELinux,因此我们需要修复 /etc/shadow 文件的上下文。这是因为当运行 'passwd' 命令时,它会创建一个新的 /etc/shadow 文件。由于 SELinux 不在此模式下运行,因此创建的文件没有 SELinux 上下文,这可能会在我们重新启动时导致问题。使用“touch”命令创建 /.autorelabel 文件,此文件将在下次启动时自动执行所有文件的重新标记。
输入两次“exit”命令,第一个将退出 chroot jail 环境,而第二个将退出 initramfs root shell 并重新启动系统。
重新启动完成后,我们将能够使用具有新设置的密码的 root 帐户。