如何使用grub2-setpassword(RHEL/CentOS 7)设置GRUB2密码

时间:2020-02-23 14:40:33  来源:igfitidea点击:

在本文中,将介绍"设置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-setpasswordroot用户创建一个密码。

# 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密码所需的所有功能。

现在,重新引导系统以验证更改。