前言
一旦忘记root密码,就无法执行任何面向整个系统的变更工作,此时可以使用GRUB来重置root密码。为了安全性考虑可以先设置GRUB密码,并给GRUB密码加密。
GRUB的作用
GRUB是一个来自GNU项目的多操作系统启动程序。它的作用主要体现在以下几个方面:
- 多操作系统启动:GRUB允许用户从多个操作系统中进行选择并启动。这意味着,如果计算机上安装了多个操作系统,如Windows、Linux或其他Unix-like系统,GRUB可以在启动时提供一个菜单,让用户选择要启动的操作系统。
- 引导加载程序:GRUB是计算机启动过程中的一个重要组成部分,它负责加载操作系统的内核和其他必要的启动文件。当计算机开机时,GRUB会首先加载并运行,然后加载选定的操作系统的引导加载程序或内核。
- 灵活的配置:GRUB的配置文件允许用户进行高度定制。用户可以通过编辑配置文件来更改启动菜单的外观、顺序和选项,甚至添加自定义的启动条目。
- 模块化设计:GRUB采用模块化设计,这意味着它可以动态地加载和卸载各种功能模块,以支持不同的文件系统、加密方案和其他功能。这种设计使得GRUB具有高度的可扩展性和灵活性。
- 恢复和修复:在某些情况下,如果操作系统的引导扇区或启动文件损坏,GRUB可以作为一个恢复工具来修复这些问题。通过GRUB的命令行界面或特定的恢复模式,用户可以尝试修复损坏的启动配置或重新安装操作系统的引导加载程序。
准备工作
修改GURB界面时间限制
由于GRUB界面默认有5s时间限制,可能一步留神就进入系统,因此我们可以先将时间限制移除
修改/etc/default/grub文件配置,将第一行的5更改为-1
vim /etc/default/grub
重新生成文件
grub2-mkconfig -o /boot/grub2/grub.cfg
重启Linux即可生效
设置GRUB密码
编辑/etc/grub.d/00_header文件
vim /etc/grub.d/00_header
在末尾添加以下内容
cat << EOF
set superusers='admin' #'用户名',admin可以更改
password admin 123456 #密码
EOF
重新生成文件
grub2-mkconfig -o /boot/grub2/grub.cfg
为GRUB密码加密
运用grub2-mkpasswd-pbkdf2命令生成加密的密码
grub2-mkpasswd-pbkdf2
生成成功后将grub.pbkdf2.sha512之后的内容复制到/etc/grub.d/00_header文件
vim /etc/grub.d/00_header
cat << EOF
set superusers='admin'password_pbkdf2 admin <密文>
EOF
再次重新生成文件
grub2-mkconfig -o /boot/grub2/grub.cfg
重启系统后查看是否生效
右下角没有跳秒,按 e 键进入GRUB界面
发现无法进入GRUB,原因是因为我GRUB和Linux的用户都是liugh,将GRUB的用户名更改一下
再次尝试可以进入GRUB界面
运用GRUB界面更改root密码
rd.break方法
(1)启动系统进入GRUB界面,按下<e>键进入GURB编辑
(2)找到Linux开头那一行,在末尾加上rd.break console=tty0
(3)按下<Ctrl>+<x>启动系统
(操作不成功则先尝试将rhgb quite删除,再不成功则用Shell方法)
(4)执行以下命令改变系统目录临时挂载目录
mount -o remount,rw /
(5)执行以下命令改变系统目录为临时挂载目录
chroot /sysroot
(6)执行passwd修改root密码
passwd root
(7)在根目录下创建相关文件(用于重新标记SELinux环境值)
touch /.autorelabel
重新启动即可
Shell方法
如果使用rd.break不能进入系统启动,则可以向内核传递“init=/bin/bash”或“init=/bin/sh”参数,使用shell代替默认的daemon进程来重置root密码
(1)找到Linux开头那一行,在末尾加上init=/bin.bash
(2)按下<Ctrl>+<x>启动系统
(3)执行以下命令以可写方式重新挂载根目录
mount -o remount,rw /
(4)执行命令passwd修改root密码
(5)在根目录下创建相关文件(用于重新标记SELinux环境值)
touch /.autorelabel
(6)输入下面的命令重启系统
exec /sbin/init
或者
exec /sbin/reboot