web-dev-qa-db-ja.com

Grub2:バージョン2.02〜beta2-9ubuntu1でパスワードを設定

私はubuntu 14.04を使用しており、Grubバージョンは2.02~beta2-9ubuntu1です。私はこれを長い間試してきました。私はこれを見ました 質問 しかし、それをそのように動作させることができませんでした。とにかく私は解決策を持っていますが、それが正しいかどうか、またはセキュリティリスクがあるかどうかはわかりません。提案してください。

私はGRUBを次のように設定したかった:-

  1. GRUBメニューを編集するか、レスキューモードに入るには認証が必要です。
  2. 認証はnotOSの起動に必要ではありません

buntu Docs およびその他の多くのブログをフォローしましたが、すべてが2.02~beta2-9ubuntu1より古いGRUB2バージョンに基づいているため、ドキュメントで提案されているようにgrubスクリプトを編集できません。ドキュメントに従ってメニュー項目を編集しようとしましたが、問題が発生するたびにAuthentication was needed to boot the OS tooでした。

5
beginer

question および buntu Docs の助けを借りて、必要なものを手に入れることができましたが、自分の構成が本当に安全であれば、自分が正しいかどうかを提案してください。主に、新しいカーネルがインストールされたときに、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
5
beginer