![Grub2:在 2.02~beta2-9ubuntu1 版本中设置密码](https://linux22.com/image/859285/Grub2%EF%BC%9A%E5%9C%A8%202.02~beta2-9ubuntu1%20%E7%89%88%E6%9C%AC%E4%B8%AD%E8%AE%BE%E7%BD%AE%E5%AF%86%E7%A0%81.png)
我正在使用ubuntu 14.04
,Grub 版本是2.02~beta2-9ubuntu1
。我已经尝试了很长时间。我看到了这个问题但无法让它工作。无论如何,我有解决方案,但不确定它是否正确,或者是否有任何安全风险。请提出建议。
我希望配置 GRUB 以便:-
- 编辑 grub 菜单或进入救援模式需要身份验证。
- 身份验证是不是启动操作系统所需
我关注了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