前言
grub默认无加密,用户可免密以单用户模式进入系统修改root密码。若想增强其安全性,可以将grub加密。
GRUB2提供两种类型的密码保护:
-
修改菜单条目时需要密码,但启动菜单条目时不需要密码;
-
修改菜单条目和启动一个、多个或所有菜单条目都需要密码
CentOS 7.2之前和之后的加密方式略有区别,实验的操作系统版本为CentOS 7.5
加密步骤
编辑需密码认证,启动不需要认证
- 使用
grub2-setpassword
生成加密密码,改命令会在/boot/grub2
目录下生成一个user.cfg
文件。这种方式可以防止修改GRUB菜单条目,但是不能防止启动。如果启动时也要密码认证,需要修改grub配置文件。
grub2-setpassword
# 根据提示输入两次密码
- 重启测试,在引导菜单中按"e"键,提示输入用户名和密码。认证成功则进入编辑页面,认证失败则正常启动。
编辑和启动都需要密码认证
修改/boot/grub2/grub.cfg
文件,搜索10_linux
,去掉BEGIN和END之间的两处--unrestricted
参数,这样便可以启动也需要密码认证
解密
如果系统正常运行中,则删掉/boot/grub2/user.cfg
即可。
如果密码忘记了,可使用系统的镜像文件制作启动盘(比如用U盘制作启动盘),在BIOS引导的时候设置为U盘为优先启动项,选择Troubleshooting
-> Rescue system
-> 1) continue
,自动检测到系统后,进入一个shell,在该shell下执行chroot /mnt/sysimage
切换根系统。这时候进入的根系统便是硬盘中实际的根系统。找到/boot/grub2/user.cfg
,删掉即可。也可以注释/boot/grub2/grub.cfg
中以下部分内容:
## BEGIN /etc/grub.d/01_users ###
if [ -f ${prefix}/user.cfg ]; then
source ${prefix}/user.cfg
if [ -n "${GRUB2_PASSWORD}" ]; then
set superusers="root"
export superusers
password_pbkdf2 root ${GRUB2_PASSWORD}
fi
fi
## END /etc/grub.d/01_users ###