如何使用grub2-setpassword(RHEL/CentOS 7)设置GRUB2密码
在本文中,将介绍"设置GRUB2密码"来保护RHEL/CentOS 7上的grub2文件的步骤。
这样,未经授权的用户就无法在引导加载程序阶段修改grub条目。
但是在我们开始之前,我们必须知道GRUB2提供了两种类型的密码保护:
修改菜单项需要密码,但引导现有菜单项则不需要密码;
修改菜单项以及引导一个,多个或者所有菜单项都需要密码。
因此,当我们谈论在Linux中设置GRUB2密码时,有两个定义。
较早之前是使用grub2-mkpasswd-pbkdf2
实现的,但是从RHEL 7.2开始,推荐的设置GRUB2密码的工具是使用grub2-setpassword
。
GRUB2保护如何工作?
我们可以检查/etc/grub.d/01_users
文件,其内容如下
#!/bin/sh -e cat << EOF 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 EOF
并且在/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 ###
所以基本上其中grub会检查/boot/grub2/user.cfg
以获得GRUB2_PASSWORD
,如果找到了它将设置所提供的超级用户的密码,即root然后使用password_pbkdf2
分配相同的密码。
设置GRUB2密码的步骤
首先使用grub2-setpassword
和root
用户创建一个密码。
# grub2-setpassword Enter password: Confirm password:
该命令将使用哈希密码创建(如果尚不存在)或者更新/boot/grub2/user.cfg
的内容
# cat /boot/grub2/user.cfg GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.BB05A464F1E8C1AFC62CAE808679084D07B2DB9635934A8B7640BF84329455114E36001854108B7080D0A8A6335CBCBBA3E7B86BDF7468F307EE4EEFDCC294E2.CED195B269E2C60A94B5C61EFCF6B610383C306D5313CDB65DBE8063C7B8BDB1E571BD4661D398A7626878BF6055435658741D804F01A8E679DC69E8510B72A0
重要的提示:
我们不需要重建initramfs,因为grub2.cfg已经包含了在引导加载程序阶段检查grub密码所需的所有功能。
继续重新启动Linux节点以验证更改。
当我们看到带有grub菜单的启动屏幕时,按e
编辑突出显示的内核
它将提示我们输入" username"和" password"。
这里的用户名是root,密码将是我们与grub2-setpassword
一起使用的密码。
如果条目匹配,那么我们将获得grub2.cfg内容以进行编辑。
删除GRUB2密码的步骤
要删除GRUB2密码,必须删除/boot/grub2/user.cfg
文件或者清除该文件的内容。
因此,当没有定义GRUB2_PASSWORD时,当某些尝试编辑grub菜单的内核不会提示输入。
因此,让我们删除包含GRUB2_PASSWORD的user.cfg文件。
# rm -f /boot/grub2/user.cfg
重要的提示:
我们不需要重建initramfs,因为grub2.cfg已经包含了在引导加载程序阶段检查grub密码所需的所有功能。
现在,重新引导系统以验证更改。