一、重新启动系统,在引导菜单中,按“e”键编辑第一个引导项。
二、从grub选项中,找到以“linux16”开头的行并转到它的末尾。输入'rd.break'这行末尾没有引号,如下所示。
按“Ctrl+x”启动这些选项。这将使用root shell引导到initramfs提示符。
三、输入如下命令进行修改root密码:
unset LANG
mount -o remount,rw /sysroot
chroot /sysroot
passwd # 在此处修改密码
touch /.autorelabel
exit
exit
上面命令解释:
3.1、mount-o remount,rw/sysroot
在这个阶段,根文件系统以只读模式装载到/sysroot,并且必须使用读/写(rw)权限重新装载,以便我们实际进行任何更改。这是通过'mount-o remount,rw/sysroot'命令完成的。
3.2、chroot/sysroot
重新装载文件系统后,将其更改为chroot,以便/sysroot用作文件系统的根目录。这是必需的,以便我们运行的任何进一步的命令都是针对/sysroot的。这是通过运行'chroot/sysroot'来完成的。
3.3、passwd
从这里可以使用'passwd'命令重置根密码。
3.4、touch /.autorelabel
如果不使用SELinux,可以在此时重新启动,一切正常,但是默认情况下CentOS/RHEL7在强制模式下使用SELinux,因此我们需要修复/etc/shadow文件的上下文。这是因为当运行'passwd'命令时,它会创建一个新的/etc/shadow文件。由于SELinux没有在这种模式下运行,因此创建的文件没有SELinux上下文,这可能会在重新启动时导致问题。使用'touch'创建 /.autorelabel命令。
创建此文件将在下次启动时自动重新标记所有文件。请注意,这可能需要一些时间,这取决于文件系统上的文件量。对于一个普通的CentOS 7服务器,我需要大约2分钟才能完成。
3.5、两次 exit
输入'exit'命令两次,第一个将退出chroot-jail环境,第二个将退出initramfs根shell并重新启动系统。
文章评论