[GRUB2] Zabezpieczenie hasłem

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

Zabezpieczenie GRUB2 hasłem sprawia, że nikt, poza osobami znającymi odpowiednie dane, nie może wybrać ani edytować wpisów znajdujących się na liście. Przypomnę – edycji dokonuje się za pomocą klawisza E.

Kilka informacji na początek

  • Poniższy sposób zabezpieczenia GRUBa opiera się na podaniu loginu i hasła – dotyczy jedynie jednego użytkownika. Istnieją również sposoby na ustawienie kilku „kont dostępu” – opisane zostaną w jednym z kolejnych poradników.
  • Użytkownik i hasło, które posłużą do zabezpieczenia GRUBa nie muszą (a wręcz nie powinny – w celach bezpieczeństwa) być zgodne z Twoim loginem i hasłem do systemu.
  • Jest to podstawowy rodzaj zabezpieczenia. Zarówno użytkownik jak i hasło są nieszyfrowane. Każdy kto posada fizyczny dostęp do komputera i wie jak działa system, będzie mógł bez problemu uzyskać dostęp do plików konfiguracyjnych i obejść hasło.
Uwaga! Nieumiejętne zastosowanie opisanych poniżej czynności może doprowadzić do całkowitego zniszczenia GRUBa, a co za tym idzie – utracenia możliwości uruchomienia jakiegokolwiek systemu. Jeśli będziesz wykonywać kolejne kroki rozsądnie, na pewno nie będziesz miał problemów.

Na wszelki wypadek podaję link, który pomoże przywrócić Ci uszkodzony GRUB2 – Przywracanie GRUBa 2 z LiveCD.

Do dzieła!

  1. W terminalu wydaj polecenie:
    sudo gedit /etc/grub.d/00_header

    Na samym końcu pliku dodaj poniższy kod:

    cat << EOF
    set superusers="login"
    password login hasło
    EOF

    Gdzie login i hasło to dane, którymi będzie zabezpieczony GRUB2 – nie muszą być identyczne z tymi, których używasz w trakcie logowania do systemu. Zapisz plik – Ctrl + S.

  2. Czas na zabezpieczenie wszelkich zainstalowanych dystrybucji Linuksa. W terminalu wydaj polecenie:
    sudo gedit /etc/grub.d/10_linux

    Odszukaj linię zawierającą:

    menuentry [...] {

    I dopisz do niej:

    --users login

    Tak, aby całość wyglądała mniej więcej takL

    menuentry [...] --users login {

    U mnie wygląda to następująco:

    printf "menuentry '${title}' ${CLASS} --users login {\n" "${os}" "${version}"

    login to oczywiście ten sam login, który podałeś w kroku nr 1. Zapisz plik – Ctrl + S.

  3. Aby zabezpieczyć memtest, wydaj polecenie:
    sudo gedit /etc/grub.d/20_memtest

    lub

    sudo gedit /etc/grub.d/20_memtest86+

    W zależności od wersji memtest.
    Odszukaj linię zawierającą:

    menuentry "Memory test (memtest86+)" {

    I dopisz do niej:

    --users login

    Efekt:

    menuentry "Memory test (memtest86+)" --users login {

    Pamiętaj o odpowiednim uzupełnieniu login. Zapisz plik – Ctrl + S.

  4. Czas na zabezpieczenie wszelkich pozostałych systemów:
    sudo gedit /etc/grub.d/30_osprober

    W każdej linii zawierającej:

    menuentry

    Dodaj przed klamrą {:

    --users login

    Przykład:

    menuentry "${LONGNAME} (${2}-bit) (on ${DEVICE})" --class osx --class darwin --class os --users login {

    Zapisz plik – Ctrl + S.

  5. Wszystkie powyższe zmiany możesz zrobić również za pomocą jednej komendy:
    sudo sed -i -e '/^menuentry /s/ {/ --users login {/' /etc/grub.d/10_linux  /etc/grub.d/20_memtest86+ /etc/grub.d/30_os-prober /etc/grub.d/40_custom

    Jednak wcześniej upewnij się, że każdy plik został poprawnie zmieniony.
    Cofnięcie polecenia:

    sudo sed -i -e '/^menuentry /s/ --users login {/ {/' /etc/grub.d/10_linux  /etc/grub.d/20_memtest86+ /etc/grub.d/30_os-prober /etc/grub.d/40_custom

    Pamiętaj o odpowiednim uzupełnieniu login.

  6. Teraz już pozostaje zaktualizować GRUB2:
    sudo update-grub

    I uruchomić ponownie komputer.

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • dadag90

    printf „menuentry ‚${title}’ ${CLASS} –users login {\n” „${os}” „${version}” – tutaj jest błąd
    powinno być printf „menuentry –users login ‚${title}’ ${CLASS} {\n” „${os}” „${version}”
    jeśli już ktoś zrobił pierwszym sposobem to polecam klik