grub2 メニューエントリのオンザフライ編集を制限する

grub2 メニューエントリのオンザフライ編集を制限する

e' to edit commands before bootingGRUB2 メニューでオプションを無効にする方法はありますか?

すべてのメニューエントリをすべてのユーザーが利用できるようにしたいのですが (パスワードによる制限はオプションではありません)、ユーザーがメニューエントリを変更する機能は制限します。

それは可能ですか?

答え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

  1. 関数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/"
    
  2. 行「echo "menuentry '$(echo "$os" [...] /etc/grub.d/10_linux`」の--unrestricted後に挿入します 。例:${CLASS}in function linux_entry in

    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 を指定すると、パスワード保護が無効になります。

関連情報