我一直试图在 Fedora 38 中为 grub 启动菜单设置密码保护。不幸的是,GRUB2 的 Fedora 指南“目前正在修订”,所以我必须与其他指南合作,例如这个和这个答案。
我所做的是,根据上述来源的说明,
- 打电话
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 中有什么。
答案1
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
在生成和存储密码之前,用于读取密码的所有代码已经存在。
答案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