26.6. 使用密码保护 GRUB 2
GRUB 2 提供两种类型的密码保护:
- 修改菜单条目时需要密码,但不需要引导现有菜单条目 ;
- 修改菜单条目和引导一个、多个或所有菜单条目需要密码。
将 GRUB 2 配置为仅为修改条目需要一个密码
要需要密码身份验证才能修改 GRUB 2 条目,请按照以下步骤操作:
以 root
用户身份运行 grub2-setpassword
命令:~]# grub2-setpassword
输入并确认密码:
Enter password: Confirm password:
按照此过程创建包含密码哈希的 /boot/grub2/user.cfg
文件。此密码的用户 root
在 /boot/grub2/grub.cfg
文件中定义。在这个版本中,在启动过程中修改引导条目需要指定 root
用户名和密码。
将 GRUB 2 配置为需要修改和引导条目的密码
使用 grub2-setpassword 设置密码
可防止菜单条目未经授权的修改,但不能未经授权的启动。要同时需要密码来引导条目,请使用 grub2-setpassword
设置密码后按照以下步骤执行:
如果忘记 GRUB 2 密码,您将无法在以下过程中引导您重新配置的条目。
-
打开
/boot/grub2/grub.cfg
文件。 -
通过搜索
菜单项开头的行,找到您要使用密码保护的引导条目
。 从菜单条目块中删除
--unrestricted
参数,例如:[file contents truncated] menuentry 'Red Hat Enterprise Linux Server (3.10.0-327.18.2.rt56.223.el7_2.x86_64) 7.2 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-c109825c-de2f-4340-a0ef-4f47d19fe4bf' { load_video set gfxpayload=keep [file contents truncated]
- 保存并关闭该文件。
现在,即使是引导该条目,也需要输入 root
用户名和密码。
安装新内核版本时,对 /boot/grub2/grub.cfg
的手动更改会保留,但在使用 grub
时会丢失。因此,若要保留密码保护,请在每次使用 2-mkconfig 命令重新生成 grub
.cfggrub2-mkconfig
后使用上述程序。
如果您从 /boot/grub2/grub.cfg
文件的每个菜单条目中删除 --unrestricted
参数,则所有新安装的内核都将在 未限制的情况下创建菜单条目,
因此自动继承密码保护。
在升级到 Red Hat Enterprise Linux 7.2 前设置密码
Red Hat Enterprise Linux 7.2 中添加了 grub2-setpassword
工具,现在是设置 GRUB 2 密码的标准方法。这与之前版本的 Red Hat Enterprise Linux 不同,后者的引导条目需要在 /etc/grub.d/40_custom
文件中手动指定,超级用户在 /etc/grub.d/01_users
文件中需要手动指定。
其他 GRUB 2 用户
在没有 --unrestricted
参数的情况下引导条目需要 root 密码。但是,GRUB 2 也支持创建其他非 root 用户,这些用户可以在不提供密码的情况下引导此类条目。修改条目仍然需要 root 密码。有关创建此类用户的详情请参考 GRUB 2 手册。