Grub2:在 2.02~beta2-9ubuntu1 版本中设置密码

Grub2:在 2.02~beta2-9ubuntu1 版本中设置密码

我正在使用ubuntu 14.04,Grub 版本是2.02~beta2-9ubuntu1。我已经尝试了很长时间。我看到了这个问题但无法让它工作。无论如何,我有解决方案,但不确定它是否正确,或者是否有任何安全风险。请提出建议。

我希望配置 GRUB 以便:-

  1. 编辑 grub 菜单或进入救援模式需要身份验证。
  2. 身份验证是不是启动操作系统所需

我关注了Ubuntu 文档以及许多其他博客,但所有博客都基于 GRUB2 的旧版本,2.02~beta2-9ubuntu1因此无法按照文档中的建议编辑 grub 脚本。按照文档,我尝试编辑菜单项,但每次遇到的问题是:Authentication was needed to boot the OS too

答案1

寻求帮助问题Ubuntu 文档我设法得到了我想要的东西,但请告诉我我的配置是否真的安全,是否正确。主要是当安装新内核时,是否也必须编辑 GRUB 配置。

1. 创建哈希密码

grub-mkpasswd-pbkdf2

输入您的密码,您将收到哈希值。

2.创建 GRUB 身份验证

在文件 /etc/grub.d/40_custom 末尾添加以下条目,其中

set superusers="user1" 
password_pbkdf2 user1 GIVE-GRUB-PASSWORD-HASH-HERE
export superusers

将 GIVE-GRUB-PASSWORD-HASH-HERE 替换为作为输出收到的密码哈希值grub-mkpasswd-pbkdf2

3. 在文件 /etc/grub.d/10_linux 中对菜单项应用身份验证

添加--users ''以下几行,如下所示:-

echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} --users '' \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' --users ''  \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"

添加--unrestricted以下行,如下所示:-

echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

4.更新Grub

sudo update-grub

编辑

5. 重启系统

忘记之前添加这个了;之后您需要重新启动系统。

sudo reboot

相关内容