如何在 CentOS/RHEL 8 中重置 root 密码

从 CentOS/RHEL 7 开始,重置 root 密码比之前的版本略有变化。
在本文中,将介绍如何在 CentOS/RHEL 8 机器上恢复丢失的 root 密码。

中断启动顺序

  1. 重新启动系统并按任意键中断启动加载程序序列。

  2. 将光标移动到需要引导的条目上。

  3. 按 e 编辑所选条目。
    将光标移动到内核命令行(以 linux 开头的行,它看起来像下面的输出:

  4. 在内核命令行的末尾添加 rd.break 选项。
    这将在控制权从 initramfs 移交给实际系统之前中断。

  5. 按“Ctrl+x”并重新启动系统。
    此时,将显示一个 root shell,其中实际系统的 root 文件系统以只读方式安装在 /sysroot 上。

重新标记 SELinux

此时 SELinux 尚未启用,因此创建的任何新文件都不会分配给它们的 SELinux 上下文。
请记住,某些工具(例如 passwd)首先创建一个新文件,然后将其移动到要编辑的文件的位置,从而有效地创建一个没有 SELinux 上下文的新文件

  1. 确保所有未标记的文件(此时包括 /etc/shadow)在引导期间重新标记。
sh-4.2# touch /.autorelabel
  1. 键入 exit 两次。
    第一个将退出 chroot jail,第二个将退出 initramfs 调试 shell。
    此时,系统将继续引导,执行完整的 SELinux 重新标记,然后再次重新引导。
on  it road.com

重置root密码

要从此时恢复 root 密码,请使用以下过程。

  1. 验证根文件系统是否以只读方式挂载在“/sysroot”目录中:
switch_root:/# mount | grep -i sysroot
  1. 重新挂载 /sysroot 为读写:
switch_root:/# mount -o remount,rw /sysroot
  1. 切换到 chroot jail,其中 /sysroot 被视为文件系统树的根:
switch_root:/# chroot /sysroot
sh-4.4#
  1. 在这里设置一个新的 root 密码:
# passwd root

对于不太复杂的密码,我们可以忽略此处的警告。

日期:2020-09-17 00:13:48 来源:oir作者:oir