如何在 grub 中锁定特定操作系统

如何在 grub 中锁定特定操作系统

我目前正在双启动我的一台笔记本电脑,但我希望 Linux 发行版几乎完全隐藏。到目前为止,我已经能够做到这一点,因此您必须按 Shift 键才能显示 grub 菜单,并且我已经加密了我的 Linux 根分区(我没有主分区)。我听说您可以为特定操作系统分配密码,但我对如何操作有点困惑。

我可以让 Windows 不需要登录吗?

如何使只有我的 Linux 操作系统受到密码保护?

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

编辑:我不是在谈论 Windows 登录,我的意思是,我可以拥有它吗,这样 grub 就不需要我登录来访问 Windows(在 grub 菜单中),但我仍然需要登录 grub 才能访问佐林。另外,我试图阻止进入我的 Zorin 根分区的人并不是特别聪明,所以我并不关心他们是否可以使用实时 USB 或其他东西来进入它。

答案1

设置管理员用户和密码将限制任何其他用户使用菜单项、编辑菜单项以及使用 grub 控制台。添加--unrestrictedmenuentry允许任何用户使用该菜单项而无需输入用户名/密码,并且添加--users用户名列表允许其他用户访问menuentry.

对于最小设置,您需要添加一个带有密码的超级用户,并将其添加--unrestricted到生成 Windows 菜单条目menuentry中。/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
    
  2. 将您的密码添加到以下内容的末尾/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
    
  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. 重新启动并测试。

相关链接:

相关内容