Centos6/Centos7实现:删除grub配置文件后系统修复,实现进入单用户模式恢复用户密码,实现GRUB加密

12 系统启动流程中常见问题解答步骤

12.1 删除grub.conf,然后重启系统进行修复

Centos7系统

Centos7系统使用Grub2版本引导系统,引导菜单启动从/boot自动生成,不是menu.lst手工配置。具体内容参照配置文件: /boot/grub2/grub.cfg 该文件每次执行grub2-mkconfig后自动生成,所以修改该文件在内核升级后会失效。

  1. 记录系统相关参数
[root@ ~ 06:12:14]#df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       10190100 5330036   4319392  56% /     #重点记录根目录路径
...
[root@ ~ 06:08:30]#cat /etc/fstab                     #记录根分区和boot分区的UUID
#
# /etc/fstab
# Created by anaconda on Mon Jun 22 18:51:04 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ea1d8d1c-3e80-4a6f-98cc-c83d8897ff86 /                       ext4    defaults        1 1
UUID=35521718-2203-497c-b690-d44622dc6704 /boot                   ext4    defaults        1 2
...

  1. 将/boot/grub2/grub.cfg移出此目录,后重启系统,主机进入如下界面
mv /boot/grub2/grub.cfg /root
init 6 #重启

在这里插入图片描述

  1. 查看当下磁盘信息
    在这里插入图片描述

  2. 变量设置(通过tab键补全路径)

grub> set root=(hd0,msdos1)  #设置boot分区
grub> linux /vmlinuz-3.10.0-862.e17.x86_64 ro root=/dev/sda2#root=系统根分区路径或UUID=?
grub> initrd /initramfs-3.10.0-862.e17.x86_64.img #内核初始化环境变量设置
grub> boot #启动系统
  1. 成功登陆系统,重新生成grub.cfg文件
grub2-mkconfig -o /boot/grub2/grub.cfg

在这里插入图片描述

如果在grub模式下不知道根分区路径,那么以上方法就无法进行下去,此时就需要进行光盘引导方式来进入

rescue模式。

进入rescue模式后执行以下命令:
chroot /mnt/sysimage #暂时改变系统根目录

grub2-mkconfig -o /boot/grub2/grub.cfg #当前目录已经是系统根目录

Centos6系统

配置文件*:/boot/grub/grub.conf,保证grub和内核等在一个目录;此外它创建了一个链接文件/etc/grub.conf指向配置文件来保证用户使用配置文件一致性*

  1. 记录系统相关参数(重点:根分区挂载点,有些是逻辑卷,我的系统是/dev/sda3)
    在这里插入图片描述

  2. 将grub.conf移出目录

在这里插入图片描述

  1. 重启系统init 6,弹出grub启动命令行
    在这里插入图片描述

  2. 执行参数配置命令后,执行boot重启
    在这里插入图片描述

  3. 重新登陆系统还原grub.conf到 /boot/grub目录下(如果是移动的话那就用mv命令将文件移回去)
    在这里插入图片描述

12.2 进单用户模式恢复用户密码

Linux系统运行级别由六级,单用户模式为1级;单用户模式登陆系统主要被用来修改系统root密码。并不是谁都可以进入单用户模式,我们只能通过本地电脑前登陆单用户模式系统,而无法进行远程登陆(诸多ssh服务不会提供1运行级别)。

Centos7系统

  1. init 6 重启系统,在读秒界面 按字母e键,进入编辑模式
    在这里插入图片描述

  2. 找到 ro 字串所在的行,将ro 改为’rw init=/sysroot/bin/sh’,修改后按ctrl+x进入用用户模式
    在这里插入图片描述

  3. 进入单用户模式后,输入下面命令修改密码
    在这里插入图片描述

  4. 剩余步骤

touch /.autorelabel #修改完密码后要创建的文件以让selinux生效(无创建则无法重启)
exit #退出chroot
reboot #重启系统,生效

Centos6系统

  1. 启动系统,开机引导的时候,按下任意键(e),进入grub菜单界面,如下
    在这里插入图片描述
  2. 根据grub菜单界面底部的帮助提示,按下字母a键进行系统引导前的内核参数修改,在在kernel 一行的最后加上+空格+single,回车
    在这里插入图片描述
  3. 启动系统,即进入单用户模式,开始修改密码
    在这里插入图片描述

12.3 给grub加密

Centos7系统

为什么要给grub加密?因为如果不给grub加密,其他用户可以任意进入单用户模式修改系统账号密码,存在安全风险。

  • 查看当前centos版本
    在这里插入图片描述

  • 设置密码(保存好)

[root@ ~ 11:13:00]#grub2-mkpasswd-pbkdf2
Enter password: 
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.216202CEB237E45256DD02E80D7FAC425A4CAEEEED8850541CAB02D19A138DF224AEB2603A7CE9A7C0BE6C3FA94015AA95091B8DFE67F308AA00972FA43C0EA6.50165007B8DC1514BF95859DD8852B0AF922E0BF60773382D721A33D1A1F6C308B53C81821A850074162A3DAC95A4D087298A2EF1C61B7232E7CC431DF2CBE58
  • 修改配置文件
[root@ ~ 11:13:27]#vim /etc/grub.d/00_header
cat <<EOF
set superusers='root'  #单用户使用的用户名
password_pbkdf2 root grub.pbkdf2.sha512.10000.216202CEB237E45256DD02E80D7F    AC425A4CAEEEED8850541CAB02D19A138DF224AEB2603A7CE9A7C0BE6C3FA94015AA95091B    8DFE67F308AA00972FA43C0EA6.50165007B8DC1514BF95859DD8852B0AF922E0BF6077338    2D721A33D1A1F6C308B53C81821A850074162A3DAC95A4D087298A2EF1C61B7232E7CC431D
F2CBE58   			   #尾部是加密密码,一定要加上,用于输入密码判定
EOF
  • 重新编译grub.cfg文件
[root@ ~ 11:22:38]#grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-09726f1d0db4408cbc2fe751f0b185ea
Found initrd image: /boot/initramfs-0-rescue-09726f1d0db4408cbc2fe751f0b185ea.img
done
  • init 6重启系统,在读秒界面,按字母e键,弹出grub登陆界面(grub加密生效),输入用户名和密码,按回车键;

在这里插入图片描述
在这里插入图片描述

Centos6系统

  1. 生成基于MD5算法的加密密码
[root@lin ~]# grub-md5-crypt
Password: 
Retype password: 
$1$mgqu/1$5vcAFwFSL4Xtb574S2.U30

2.在/boot/grub/grub.conf文件中添加密码串

[root@lin ~]# vi /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --md5 $1$mgqu/1$5vcAFwFSL4Xtb574S2.U30  #添加在这里是对grub菜单整体加密,锁定编辑模式
title CentOS 6 (2.6.32-696.el6.x86_64)
#添加在这里是对某个菜单进行加密,不能锁定编辑模式
        root (hd0,0)
        kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=56*****3a-6**4-**4b-adb7-d40********e01 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-696.el6.x86_64.img
~
  1. 按init 6启动系统,按下任意键进入grub菜单界面,下面的提示要求按p键输入密码才能进入grub编辑模式(尾部提示信息发生变化)
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_31789689/article/details/108060598