限制 grub2 菜单项的即时编辑

The*_*eou 5 grub2 menu editing

有没有办法禁用e' to edit commands before bootingGRUB2 菜单中的选项?

我希望所有用户都可以使用所有菜单项(因此密码限制它们不是一个选项),但限制用户更改所述菜单项的能力。

那可能吗?

小智 1

在 Ubuntu 18.04 上,我添加后它开始工作

\n\n
GRUB_DISABLE_SUBMENU=y\n
Run Code Online (Sandbox Code Playgroud)\n\n

到 /etc/default/grub. 所以基本上步骤是:

\n\n

生成密码:

\n\n
grub-mkpasswd-pbkdf2\n
Run Code Online (Sandbox Code Playgroud)\n\n

将以下行复制到 /etc/grub.d/40_custom 的末尾,并将密码替换为上面输出中的密码。这将完全用密码保护 grub:

\n\n
set superusers="grubadm"\npassword_pbkdf2 grubadm grub.pbkdf2.sha512.10000.D23193A0BE80A8D94606716D2DBE18C1AC77563FD87B7DA41824467E9393EBFFAF8B909DFAD83293325016EF6DA112EBAC819B3196F2D9F764F56E037E4EB86A.78AAD14971909106B4BE80AB6BF704804E67D5486966D9A85289E5449F08BD54E55B83B28CF0A4F2B4D486F2136439B7786135B8D59C611BF9DE2CDE965DB791\n
Run Code Online (Sandbox Code Playgroud)\n\n

允许选择不同内核版本的启动项。编辑/etc/grub.d/10_linux

\n\n
    \n
  1. 在函数 linux_entry in 的行--unrestricted之后插入,例如${CLASS}echo "menuentry \'$(title "$os" [...]/etc/grub.d/10_linux

    \n\n
    echo "menuentry \'$(echo "$title" | grub_quote)\' ${CLASS} --unrestricted \\$menuentry_id_option \'gnulinux-$version-$type-$boot_device_id\' {" | sed "s/^/$submenu_indentation/"\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
  3. 在 \xc2\xb4echo "menuentry \'$(echo "$os" [...] /etc/grub.d/10_linux`行--unrestricted之后插入 ,例如${CLASS}in function linux_entry in

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

将以下行添加到 /etc/default/grub

\n\n
GRUB_DISABLE_SUBMENU=y\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过执行重建 grub conf 文件

\n\n
update-grub\n
Run Code Online (Sandbox Code Playgroud)\n


Tre*_*don 0

来自维基:

如果启用任何形式的 GRUB 2 密码保护,则需要超级用户的名称和密码才能访问 GRUB 2 命令行和菜单编辑模式。

这似乎意味着您需要允许非特权用户启动:

GRUB 2 菜单可以包含受保护和不受保护的项目。保护菜单项的格式包括将用户访问信息添加到菜单项标题行。

--unrestricted 的存在会禁用密码保护。