Ubuntu 14.04 LTS AMD64でGRUB2のパスワードを設定する必要があります。 私が到達しようとしているセットアップは、[e] ditおよび[c] onsoleオプションをパスワードで保護しますが、オペレーティングシステムエントリ(Ubuntu、Windows)のブートは保護されません。
Grub2/Passwords (これは時代遅れで、非常に混oticとしており、ほとんど読めません)を研究しましたが、スーパーユーザーのパスワードを設定し、メニューエントリに--unrestricted
オプションを追加する必要があるようです。わかりましたが、この--unrestricted
オプションを正確にどこに追加しましたか?
/boot/grub/grub.cfg
にある場合、このファイルはgrub-update
が実行されるたびに上書きされるため、最も賢い考えではありません。だから、これは私にとって選択肢ではありません。なぜなら、-仮定してみましょう-GRUB背景画像を週に2回変更したいからです。さらに、/boot/grub/grub.cfg
可読性は完璧にはほど遠いです。 --unrestricted
オプションをどこに配置するかはまだ明らかではありません。
The/etc/grub.d/*
のメニューエントリファイルにある場合、/boot/grub/grub.cfg
を編集するよりもさらにひどいです。これらのファイルは読みやすさの点で非常に混乱しているため、編集はさらに難しくなります。
説明したようにGRUB2パスワードを設定するためのクリーンで簡単な方法はありますか?この投稿でリンクしたドキュメント以外の素晴らしいドキュメントがありますか?
現在、ユーザーを追加したり、保護するメニュー項目を指定したりする自動化された方法はありません。ユーザーは、GRUB 2スクリプトを手動で編集する必要があります。 GRUB 2メニューは、いくつかのスクリプトの入力をまとめたものです。 /etc/grub.d/10_linuxファイルは、デフォルトのUbuntu OSをGRUB 2メニューに追加する役割を果たします。 [...]これらのセクションの大部分は、/ etc/grub.d /フォルダーにあるデフォルトスクリプトの編集に専念しています。
そして 次のセクション :
GRUB 2メニューには、/ etc/grub.d/30_os-proberスクリプトを介したデフォルトのUbuntu OS以外のオペレーティングシステムの選択が含まれています。 [...]これには、他のUbuntuおよびLinuxインストール、Windowsなどが含まれます。
30_os-proberスクリプトは、特定の種類のオペレーティングシステムを探します。ユーザーは、単一のコマンドを使用して、または以下で説明するようにOSタイプごとに個別に、すべてのOSを変更できます。
したがって、/etc/grub.d/
のファイルを編集する必要があるようです。少なくともスーパーユーザーを追加する場合、これらのファイルのいずれかを編集する必要はありませんが、 新しいファイル を作成できます。
スーパーユーザー/ユーザー情報とパスワードは、/ etc/grub.d/00_headerファイルに含まれている必要はありません。情報は、そのファイルがgrub.cfgに組み込まれている限り、任意の/etc/grub.dファイルに配置できます。ユーザーは、このデータを/etc/grub.d/40_customなどのカスタムファイルに入力して、Grubパッケージが更新されても上書きされないようにすることができます。カスタムファイルに情報を配置する場合は、これらのファイルからコンテンツが自動的に追加されるため、「cat << EOF」および「EOF」行を含めないでください。
これらのパラグラフは、公式のGRUBドキュメントが別の方法で言及するまで関連性を保ちます:
Grub-mkconfigプログラムには、認証付きの構成ファイルを生成するためのサポートがまだ組み込まれていません。
(それが意味するものは何でも。)
メニューエントリを保護するための古い手順は次のとおりです。
/etc/grub.d/10_linuxで、次の行を見つけます。
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
--users ''
を追加:printf "menuentry '${title}' ${CLASS} --users '' {\n" "${os}" "${version}"
30_os-prober
のすべてのエントリ:
Sudo sed 's/--class os /--class os --users /' -i /etc/grub.d/30_os-prober
buntuパッケージ はUbuntu 12.10をリストしないため、12.10が古いメソッドを使用するか新しいメソッドを使用するかはわかりません。
現在、10_linux
ファイルはecho
の代わりにprintf
を使用しています。
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
そして30_os-prober
ファイルはcat
とheredocsを使用します:
# The minix entry
cat << EOF
menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
EOF
# The hurd entry
cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
EOF
したがって、メニューエントリが終了する前(ブレースが開く前)に--user ""
部分を貼り付けることができます。
変更したファイルは必ずバックアップし、変更後にupdate-grub
を実行してください。
superusers
を構成します。これを行うには、たとえば、次の行を/etc/grub.d/00_header
に追加します。
# Support user protection on entries
cat << EOF
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.8E51188BE7DF732DDF102C918DEC152087558E04DA843B4A74C3EA8374BAB1ECA493399D62E3F2779F55C5BE2E8B65B8636113A99C09BFB892DB64626337904C.3016474FE6B420DBE6371B41D9BE8471B135CDF4BE674AC1265D3BA123CD9E459E960AEC199AB8C7C1C1A6BAF45314C64591E85E404AB54F4777E032A50CC731
EOF
grub-mkpasswd-pbkdf2
コマンドの出力を使用して、暗号化されたパスワードを更新します。この例では、変更する必要があるのは次の情報です。
grub.pbkdf2.sha512.10000.8E51188BE7DF732DDF102C918DEC152087558E04DA843B4A74C3EA8374BAB1ECA493399D62E3F2779F55C5BE2E8B65B8636113A99C09BFB892DB64626337904C.3016474FE6B420DBE6371B41D9BE8471B135CDF4BE674AC1265D3BA123CD9E459E960AEC199AB8C7C1C1A6BAF45314C64591E85E404AB54F4777E032A50CC731
/etc/grub.d/10_linux
ファイルを編集し、129行目を探します(Ubuntu 14.04 LTS内)。そのままの形では、次のようになります。
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
ここで、CLASS変数の後に--unrestricted
オプションを追加して、構成行を完了します。
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
/boot/grub/grub.cfg
を再構築します。これを行うには、Sudo update-grub
コマンドを実行します。
システムを再起動して試してください。
これで、次の構成が必要になります。
メインのUbuntuオペレーティングシステムエントリは通常どおり起動しますが、superusers
以外の誰もリスト内の関連エントリを編集できません。
リスト内の他のすべてのエントリを起動および編集できるのは、superusers
のみです。
こちらもご覧ください: