Grub에서 특정 운영 체제를 잠그는 방법

Grub에서 특정 운영 체제를 잠그는 방법

현재 랩톱 중 하나를 이중 부팅하고 있지만 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비밀번호를 두 번 입력한 후 결과 문자열을 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. 재부팅하고 테스트하십시오.

관련된 링크들:

관련 정보