如何在 Fedora 38 中用密码保护 grub 启动菜单?

如何在 Fedora 38 中用密码保护 grub 启动菜单?

我一直试图在 Fedora 38 中为 grub 启动菜单设置密码保护。不幸的是,GRUB2 的 Fedora 指南“目前正在修订”,所以我必须与其他指南合作,例如这个这个答案

我所做的是,根据上述来源的说明,

  1. 打电话grub2-set-password设置密码。
  2. 调用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 中有什么。

答案1

grub2-set-password这是UEFI 启动系统中的一个错误。grub2-set-password将生成的密码存储在 中/boot/grub2/user.cfg,这将是传统 BIOS 启动的正确位置。UEFI 启动尝试从 读取此信息${prefix}/user.cfg,根据实验,它似乎映射到/boot/efi/EFI/fedora/user.cfg

作为临时解决方案,以下在 UEFI 启动系统中解决了该问题(这是上面提到的实验),

  1. 拨打grub2-set-password电话生成密码
  2. mv /boot/grub2/user.cfg /boot/efi/EFI/fedora/

在此之后调用grub2-mkconfig似乎没有必要:/boot/efi/EFI/fedora/grub.cfg在生成和存储密码之前,用于读取密码的所有代码已经存在。

答案2

此方法来自文章 如何在 Linux Mint、Ubuntu、Debian 中为 Grub 启动菜单添加密码保护 您可以在其中找到更多详细信息和屏幕截图。

以下是 Fedora 文章的摘要。

生成散列密码

在终端中运行命令grub-mkpasswd-pbkdf2并复制以 开头的输出字符串grub.pbkdf2.sha512…

为 Grub 启动菜单添加密码保护

  • 通过在终端中运行来编辑配置文件:

    sudo nano /etc/grub.d/40_custom
    
  • 添加两行新内容(明文密码):

    set superusers="USER_NAME"
    password USER_NAME PASSWORD
    

    或者生成密码的哈希值:

    set superusers="USER_NAME"
    password_pbkdf2 USER_NAME encryption_key
    
  • 按 Ctrl+X,输入y并按 Enter 保存文件。

应用更改

在终端中运行以下命令。

对于 UEFI 启动:

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

对于传统 BIOS 启动:

grub2-mkconfig -o /boot/grub2/grub.cfg

相关内容