Grubで特定のオペレーティングシステムをロックする方法

Grubで特定のオペレーティングシステムをロックする方法

現在ラップトップの1つをダブルブートしていますが、Linuxディストリビューションをほぼ完全に隠したいと思います。これまでは、Shiftキーを押すだけでGrubメニューを表示でき、Linuxルートパーティションを暗号化しました(デフォルトパーティションはありません)。特定のオペレーティングシステムにパスワードを割り当てることができると聞きましたが、どうすればよいか少し混乱します。

Windowsでログインを要求しないように設定できますか?

私のLinuxオペレーティングシステムのみをパスワードで保護するにはどうすればよいですか?

(注:私はZorin OS 15 CoreでWindows 10を使用しています)

編集:Windowsログインについて話すものではありません。 grubがウィンドウにアクセスするためにログインする必要がないように(grubメニューから)ログインできるようにすることはできますか?ただし、アクセスするにはまだgrubにログインする必要があります。ジョリン。また、私がZorinルートパーティションに入らないようにブロックしたい人は特に賢くないので、彼らがライブUSBなどを使ってそこに入ることができるかどうかはあまり気にしません.

答え1

管理者ユーザーとパスワードを設定すると、他のユーザーのメニュー項目の使用、メニュー項目の編集、およびgrubコンソールの使用が制限されます。--unrestrictedに追加するmenuentryすべてのユーザーがユーザー名/パスワードを入力せずにこのメニュー項目を使用できるようにし、--usersユーザー名のリストを追加すると他のユーザーがアクセスできますmenuentry

最小設定の場合は、パスワード付きのスーパーユーザーを追加して--unrestrictedWindowsの作成メニュー項目に追加する必要がありますmenuentry/etc/grub.d/30_os_prober

  1. 編集、Windows関連の項目を/etc/grub.d/30_os-prober見つけて、このメニューに項目を追加します。私の場合は、文字列を検索して次の行を修正しました。これで編集されたブロックは次のようになります。menuentry--unrestrictedWindowsmenuentry

          cat << EOF
    menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --unrestricted $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
    EOF
    
  2. 次の最後にパスワードを追加してください/etc/grub.d/30_os-prober

    cat << EOF
    set superusers="freddy"
    password freddy 1234
    EOF
    

    /etc/grub.d/どのプロファイルをパスワードとして使用するかは関係ありません。00_headerorを代わりに使用することもできます10_linux

    パスワードを暗号化するには、を実行してgrub-mkpasswd-pbkdf2パスワードを2回入力し、結果の文字列をパスワードgrub.pbkdf2.sha512.10000.<a_very_long_string>として使用します。パスワード入力は、次の文字で始める必要がpassword_pbkdf2ありますpassword

    password_pbkdf2 freddy grub.pbkdf2.sha512.10000.68B90AFC[...]86858AF939
    
  3. 走る

    sudo update-grub
    

    grubを更新し、生成されたWindowsエントリに/boot/grub/grub.cfgこの--restrictedフラグがあることを確認してください。結果30_os-prober-block は次のようになります。

    ### BEGIN /etc/grub.d/30_os-prober ###
    menuentry 'Windows 10 (on /dev/sda1)' --unrestricted --class windows --class os $menuentry_id_option 'osprober-chain-A25E43975E436361' {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  A25E43975E436361
        else
          search --no-floppy --fs-uuid --set=root A25E43975E436361
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
    }
    set superusers="freddy"
    password freddy 1234
    ### END /etc/grub.d/30_os-prober ###
    
  4. 再起動してテストします。

関連リンク:

関連情報