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

beg*_*ner 5 grub2 grubrescue 14.04

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

我想将 GRUB 配置为:-

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

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

beg*_*ner 5

问题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
Run Code Online (Sandbox Code Playgroud)

将 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/"
Run Code Online (Sandbox Code Playgroud)

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

添加--unrestricted到以下行,以便您拥有:-

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

4. 更新 Grub

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

编辑

5. 重启系统

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

sudo reboot
Run Code Online (Sandbox Code Playgroud)