Grub2

如何在 grub 中鎖定特定的作業系統

  • December 8, 2019

我目前正在雙啟動我的一台筆記型電腦,但我希望 Linux 發行版實際上完全隱藏。到目前為止,我已經做到了,所以你必須按 Shift 才能顯示 grub 菜單,並且我已經加密了我的 Linux 根分區(我沒有主分區)。我聽說您可以為特定作業系統分配密碼,但我對如何做到這一點有點困惑。

我可以讓 Windows 不需要登錄嗎?

如何使只有我的 Linux 作業系統受密碼保護?

(注意:我使用的是帶有 Zorin OS 15 Core 的 Windows 10)

編輯:我不是在談論 windows 登錄,我的意思是,我可以擁有它,那麼 grub 不需要我登錄來訪問 windows(在 grub 菜單中),但我仍然需要登錄 grub 來訪問佐林。此外,我試圖阻止進入我的 Zorin 根分區的人並不是特別聰明,所以我真的不在乎他們是否可以使用實時 USB 或其他東西進入它。

設置超級使用者和密碼將限制任何其他使用者使用菜單條目、編輯菜單條目和使用 grub 控制台。添加--unrestricted到 amenuentry允許任何使用者在不輸入使用者名/密碼的情況下使用該菜單條目,並添加--users使用者名列表允許其他使用者訪問 a menuentry

對於最低限度的設置,您需要添加一個帶有密碼的超級使用者並添加--unrestricted到生成 Windows 菜單條目的menuentryin中。/etc/grub.d/30_os_prober

  1. 編輯/etc/grub.d/30_os-prober,找到menuentry負責 Windows 條目並添加--unrestricted到此菜單條目。就我而言,我搜尋了字元串Windows並編輯了下一menuentry行。編輯後的塊現在看起來像這樣:
     cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --unrestricted $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
EOF
  1. 將您的密碼添加到末尾/etc/grub.d/30_os-prober
cat << EOF
set superusers="freddy"
password freddy 1234
EOF

/etc/grub.d/請注意,我們將哪個配置文件用於我們的密碼並不重要。我們也可以使用00_headeror10_linux代替。

如果你想加密你的密碼,執行grub-mkpasswd-pbkdf2,輸入你的密碼兩次,然後使用生成的字元串grub.pbkdf2.sha512.10000.<a_very_long_string>作為你的密碼。然後密碼條目必須以password_pbkdf2而不是開頭password

password_pbkdf2 freddy grub.pbkdf2.sha512.10000.68B90AFC[...]86858AF939
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 ###
  1. 重新啟動並測試。

相關連結:

引用自:https://unix.stackexchange.com/questions/556134