从 CentOS/RHEL 7 开始,重置 root 密码比之前的版本略有变化。
在本文中,将介绍如何在 CentOS/RHEL 8 机器上恢复丢失的 root 密码。
中断启动顺序
重新启动系统并按任意键中断启动加载程序序列。
将光标移动到需要引导的条目上。
按 e 编辑所选条目。
将光标移动到内核命令行(以 linux 开头的行,它看起来像下面的输出:在内核命令行的末尾添加 rd.break 选项。
这将在控制权从 initramfs 移交给实际系统之前中断。按“Ctrl+x”并重新启动系统。
此时,将显示一个 root shell,其中实际系统的 root 文件系统以只读方式安装在 /sysroot 上。
重新标记 SELinux
此时 SELinux 尚未启用,因此创建的任何新文件都不会分配给它们的 SELinux 上下文。
请记住,某些工具(例如 passwd)首先创建一个新文件,然后将其移动到要编辑的文件的位置,从而有效地创建一个没有 SELinux 上下文的新文件
- 确保所有未标记的文件(此时包括 /etc/shadow)在引导期间重新标记。
sh-4.2# touch /.autorelabel
- 键入 exit 两次。
第一个将退出 chroot jail,第二个将退出 initramfs 调试 shell。
此时,系统将继续引导,执行完整的 SELinux 重新标记,然后再次重新引导。
on it road.com
重置root密码
要从此时恢复 root 密码,请使用以下过程。
- 验证根文件系统是否以只读方式挂载在“/sysroot”目录中:
switch_root:/# mount | grep -i sysroot
- 重新挂载 /sysroot 为读写:
switch_root:/# mount -o remount,rw /sysroot
- 切换到 chroot jail,其中 /sysroot 被视为文件系统树的根:
switch_root:/# chroot /sysroot sh-4.4#
- 在这里设置一个新的 root 密码:
# passwd root
对于不太复杂的密码,我们可以忽略此处的警告。
日期:2020-09-17 00:13:48 来源:oir作者:oir