我一直在尝试在 Fedora 38 中对 grub 启动菜单进行密码保护。现在,不幸的是,Fedora GRUB2 指南“目前正在修订过程中”,所以我不得不使用其他指南,例如这个和这个答案。
我所做的是,根据上述来源中的说明,
- 打电话
grub2-set-password
设置密码。 - 调用
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
重新创建 grub 配置。
这对 grub 启动菜单没有影响:我仍然可以使用“e”编辑内核参数。我可以看到密码已存储在其中/boot/grub2/user.cfg
,并且我可以看到/etc/grub.d/01_users
应该适当地设置密码superuser
和其他值,如上面的答案链接所示。
那么:我怎样才能实现我想要做的事情呢?
编辑。grub2-set-password
将密码存储到文件中/boot/grub2/user.cfg
,而在 UEFI 系统中,脚本01_users
尝试从文件中读取密码${prefix}/user.cfg
。鉴于在 UEFI 系统中,目录 中包含其他引导信息/boot/efi/EFI/fedora
,grub2-set-password
在这种情况下可能会将密码存储到不正确的目录中。我想知道${prefix}
UEFI 里有什么。
此方法来自文章 如何在 Linux Mint、Ubuntu、Debian 中向 Grub 启动菜单添加密码保护, 您可以在其中找到更多详细信息和屏幕截图。
以下是 Fedora 文章的摘要。
生成哈希密码
在终端中运行命令
grub-mkpasswd-pbkdf2
并复制以 开头的输出字符串grub.pbkdf2.sha512…
。将密码保护添加到 Grub 启动菜单
通过在终端中运行来编辑配置文件:
添加两行新行(纯文本密码):
或者生成密码的哈希值:
按 Ctrl+X,键入
y
并按 Enter 键保存文件。应用更改
在终端中运行以下命令。
对于 UEFI 启动:
对于旧版 BIOS 启动:
grub2-set-password
这是UEFI 引导系统中的一个错误。grub2-set-password
将生成的密码存储在 中/boot/grub2/user.cfg
,这将是旧版 BIOS 启动的正确位置。UEFI 引导尝试从中读取此信息${prefix}/user.cfg
,根据实验,该信息似乎映射到/boot/efi/EFI/fedora/user.cfg
。作为临时解决方案,下面解决了UEFI引导系统中的问题(这就是上面提到的实验),
grub2-set-password
生成密码mv /boot/grub2/user.cfg /boot/efi/EFI/fedora/
此后调用
grub2-mkconfig
似乎没有必要:/boot/efi/EFI/fedora/grub.cfg
甚至在生成和存储密码之前,所有用于读取密码的代码都已存在。