有没有办法禁用e' to edit commands before booting
GRUB2 菜单中选项?
我希望所有菜单项都可供所有用户使用(因此密码限制它们不是一个选项)但限制用户更改所述菜单项的能力。
那可能吗?
答案1
在 Ubuntu 18.04 上,我添加后它开始工作
GRUB_DISABLE_SUBMENU=y
到 /etc/default/grub。因此,基本步骤如下:
使用以下方式生成密码:
grub-mkpasswd-pbkdf2
将以下几行复制到 /etc/grub.d/40_custom 的末尾,并将密码替换为上面输出中的密码。这将完全使用密码保护 grub:
set superusers="grubadm"
password_pbkdf2 grubadm grub.pbkdf2.sha512.10000.D23193A0BE80A8D94606716D2DBE18C1AC77563FD87B7DA41824467E9393EBFFAF8B909DFAD83293325016EF6DA112EBAC819B3196F2D9F764F56E037E4EB86A.78AAD14971909106B4BE80AB6BF704804E67D5486966D9A85289E5449F08BD54E55B83B28CF0A4F2B4D486F2136439B7786135B8D59C611BF9DE2CDE965DB791
允许选择不同内核版本的启动项。编辑/etc/grub.d/10_linux
和
在函数 linux_entry 中的行
--unrestricted
后插入,例如${CLASS}
echo "menuentry '$(title "$os" [...]
/etc/grub.d/10_linux
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
在行
--unrestricted
后${CLASS}
插入 ´echo "menuentry '$(echo "$os" [...]in function linux_entry in
/etc/grub.d/10_linux`,例如echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
将以下行添加到 /etc/default/grub
GRUB_DISABLE_SUBMENU=y
通过执行重建 grub conf 文件
update-grub
答案2
来自维基百科:
如果启用了任何形式的 GRUB 2 密码保护,则需要超级用户的名称和密码才能访问 GRUB 2 命令行和菜单编辑模式。
这似乎意味着您需要允许非特权用户启动:
GRUB 2 菜单可以包含受保护和不受保护的菜单项。保护菜单项的格式包括将用户访问信息添加到菜单项标题行。
--unrestricted 的存在会禁用密码保护。