Zapomniane hasło w Linuksie może przytrafić się każdemu – od nowicjusza po administratora. Na szczęście popularne dystrybucje, takie jak Ubuntu, Debian, Fedora oraz systemy oparte na RHEL, udostępniają sprawdzone sposoby odzyskania dostępu do konta.

Procedury z tego poradnika wymagają fizycznego dostępu do komputera lub konsoli wirtualnej – to kluczowe założenie bezpieczeństwa.

Wprowadzenie do odzyskiwania haseł w Linuksie

Hasła w Linuksie są haszowane i przechowywane w /etc/shadow. Mimo to reset jest możliwy dzięki trybom rozruchu i narzędziom administracyjnym dostępnym przed pełnym startem systemu.

Najczęściej stosowane ścieżki resetu to:

  • tryb odzyskiwania (Recovery Mode) – dostępny w Ubuntu/Debian, zapewnia powłokę root,
  • edycja parametrów GRUB – tymczasowe dodanie init=/bin/bash lub rd.break do linii jądra,
  • Live USB/DVD – uruchomienie środowiska Live, montaż systemu i użycie chroot.

Na systemach z szyfrowaniem LUKS potrzebne jest hasło do odszyfrowania dysku, a w środowiskach z SELinux często konieczne jest relabelowanie kontekstów bezpieczeństwa.

Metoda 1 – reset hasła w trybie odzyskiwania (Ubuntu/Debian)

To najprostsza metoda w Ubuntu, Debian i pochodnych (Linux Mint, elementary OS). Pozwala uruchomić system w minimalnym trybie i uzyskać powłokę root.

Wejście do Recovery Mode

  1. Zrestartuj komputer i wywołaj menu GRUB (przytrzymaj Shift lub wciskaj Esc na UEFI).
  2. Wybierz „Advanced options for Ubuntu”, następnie pozycję z dopiskiem „(recovery mode)”.
  3. W menu Recovery wybierz opcję „root”, aby przejść do powłoki administratora.

Remontowanie systemu plików i zmiana hasła

Po uzyskaniu powłoki root zamontuj system plików w trybie zapisu:

mount -o remount,rw /

Jeśli nie pamiętasz nazwy użytkownika, pokaż katalogi domowe:

ls /home

Ustaw nowe hasło dla wskazanego konta:

passwd nazwa_uzytkownika

Podczas wpisywania hasła znaki nie są wyświetlane – to normalne.

Powrót do normalnego rozruchu

Zakończ pracę w powłoce i wznow rozruch:

exit

W menu Recovery wybierz „resume”, a następnie zaloguj się nowym hasłem. Metoda nie wymaga dodatkowych nośników ani skomplikowanej konfiguracji.

Metoda 2 – edycja parametrów GRUB

Uniwersalna metoda dla większości dystrybucji. Polega na jednorazowej modyfikacji parametrów jądra, by uzyskać uprzywilejowaną powłokę i zresetować hasło.

Najważniejsze parametry w GRUB:

  • init=/bin/bash – uruchamia powłokę bash z uprawnieniami root zamiast procesu init;
  • rd.break – zatrzymuje rozruch w initramfs (typowe dla RHEL/CentOS/AlmaLinux/Rocky Linux);
  • rw zamiast ro – montuje rootfs w trybie zapisu, co ułatwia zmianę hasła.

Jak edytować wpis GRUB

  1. Zrestartuj komputer, wejdź do menu GRUB i zaznacz domyślny wpis rozruchowy.
  2. Naciśnij e, odszukaj linię zaczynającą się od „linux”, „linux16” lub „linuxefi”.
  3. Na końcu linii dodaj odpowiedni parametr (np. init=/bin/bash lub rd.break) i zatwierdź Ctrl+X lub F10.

Reset hasła – Debian/Ubuntu (init=/bin/bash)

Po załadowaniu powłoki wykonaj remontowanie i zmianę hasła:

mount -n -o remount,rw /

Teraz ustaw nowe hasło:

passwd nazwa_uzytkownika

Wymuś zapis i restart:

sync
reboot -f

Reset hasła – Enterprise Linux (rd.break + SELinux)

Po starcie do „switch_root:/#” zamontuj system i przejdź do środowiska chroot:

mount -o remount,rw /sysroot
chroot /sysroot

Zmień hasło (dla root lub konkretnego użytkownika):

passwd
passwd nazwa_uzytkownika

Wymuś relabelowanie SELinux po restarcie:

touch /.autorelabel

Wyjdź dwukrotnie, by kontynuować rozruch:

exit
exit

Metoda 3 – reset hasła z Live CD/USB

Skuteczna, gdy dostęp do GRUB jest zablokowany lub utrudniony. Uruchamiasz system Live, montujesz docelowy system plików i używasz chroot.

Przygotowanie nośnika i start

  1. Pobierz obraz Live (np. Ubuntu Live, Fedora Live) i przygotuj pendrive narzędziem Rufus, Etcher lub komendą dd.
  2. Uruchom komputer z USB/DVD wybierając urządzenie w menu BIOS/UEFI (np. F12, F10, Del).
  3. W środowisku Live uruchom terminal.

Identyfikacja i montowanie partycji

Aby ustalić, gdzie jest zainstalowany Linux, użyj:

sudo fdisk -l

Lub alternatywnie:

sudo lsblk -f

Utwórz punkt montowania i zamontuj partycję systemową:

sudo mkdir /mnt/myroot
sudo mount /dev/sda5 /mnt/myroot

Zmiana hasła z chroot

Wejdź do środowiska zainstalowanego systemu i ustaw nowe hasło:

sudo chroot /mnt/myroot
passwd nazwa_uzytkownika

Jeśli zmieniasz hasło root:

passwd root

Zakończ i odmontuj:

exit
sudo umount /mnt/myroot

Alternatywa – passwd –root (Arch i pochodne)

Bez konieczności chroot, bezpośrednio w środowisku Live:

passwd --root /mnt/myroot nazwa_uzytkownika

Metoda 4 – szczegóły dla Enterprise Linux (RHEL/CentOS/AlmaLinux/Rocky Linux)

RHEL/CentOS 7+

  1. W GRUB edytuj wpis i dodaj rd.break do linii jądra.
  2. Po starcie zamontuj i chrootuj system:

mount -o remount,rw /sysroot
chroot /sysroot

Zmień hasło i przygotuj relabelowanie:

passwd
passwd nazwa_uzytkownika
touch /.autorelabel

Wyjdź dwa razy, system zrestartuje się i przeprowadzi relabelowanie.

RHEL/CentOS 6 i starsze

  1. W GRUB dodaj parametr single/s/S/1 do linii jądra i uruchom system.
  2. Jeśli system plików jest tylko do odczytu, przełącz na zapis, a następnie zmień hasło i zrestartuj:

mount -o remount,rw /
passwd
reboot

Szyfrowane dyski LUKS – szczególne kroki

Przy LUKS konieczna jest znajomość hasła do odszyfrowania dysku – inaczej reset konta nie będzie możliwy.

Z nośnika Live odszyfruj dysk i zamontuj system przed chroot:

sudo cryptsetup luksOpen /dev/sda3 sda3_crypt
sudo mount /dev/mapper/sda3_crypt /root
sudo chroot /root

Następnie zmień hasło standardowo i zrestartuj.

SELinux i konteksty bezpieczeństwa

SELinux pilnuje kontekstów bezpieczeństwa plików i procesów. Zmiana hasła poza typowym rozruchem (np. rd.break/chroot) może wymagać relabelowania, aby /etc/shadow i powiązane pliki miały poprawne konteksty.

Aby wymusić relabelowanie przy następnym starcie, utwórz plik sygnalizacyjny:

touch /.autorelabel

Relabelowanie może potrwać od kilku minut do godzin na dużych systemach, lecz jest kluczowe dla poprawnego działania po resecie hasła.

Różnice między dystrybucjami – szybkie porównanie

Poniższa tabela podsumowuje preferowane metody i uwagi specyficzne dla popularnych dystrybucji:

Dystrybucja Zalecana metoda Uwagi
Debian/Ubuntu/Mint/elementary OS Recovery Mode Prosty dostęp do powłoki root, szybki reset hasła
RHEL/CentOS/AlmaLinux/Rocky Linux GRUB z rd.break Wymagane touch /.autorelabel dla SELinux
Fedora GRUB z rd.break Procedura jak w RHEL; zależności wersji możliwe
openSUSE GRUB lub Live + chroot Szczegóły mogą się różnić, podejście analogiczne
Arch Linux Live + chroot lub passwd –root Brak SELinux domyślnie, procedura prostsza

Narzędzia i alternatywne podejścia

Narzędzia typu John the Ripper atakują hashe haseł, lecz przy współczesnych algorytmach są wolne i niepraktyczne. Reset poprzez GRUB lub Live USB jest zwykle najszybszym i najpewniejszym rozwiązaniem.

W środowiskach korporacyjnych reset może być realizowany centralnie (np. integracja z Active Directory), co jednak wymaga odpowiedniej infrastruktury.

Praktyczne bezpieczeństwo – jak ograniczyć ryzyko

Aby zminimalizować konieczność resetów i ryzyko nieuprawnionego dostępu, rozważ poniższe działania:

  • menedżer haseł – przechowuj silne, unikalne hasła w narzędziach takich jak KeePass czy Bitwarden;
  • zapasowe konto administracyjne – utrzymuj awaryjne konto z silnym hasłem i cyklicznie je testuj;
  • zabezpieczenie rozruchu – ustaw hasło do GRUB oraz włącz pełne szyfrowanie LUKS;
  • dostępy out-of-band – w serwerach skonfiguruj BMC/IPMI, a w stacjach roboczych zapewnij nośnik Live;
  • uwierzytelnianie wieloskładnikowe – tam, gdzie to możliwe, dodaj MFA do krytycznych usług.

Każdy, kto ma fizyczny dostęp do komputera, może w praktyce zresetować hasło administratora – dlatego kluczowe są szyfrowanie dysku i hasło do GRUB.

Zaawansowane scenariusze – LUKS + chroot z nośnika Live

Gdy system jest zaszyfrowany i potrzebujesz pełnej kontroli nad środowiskiem, wykonaj odszyfrowanie oraz pełne chroot z montowaniem wymaganych pseudo-systemów plików:

sudo cryptsetup luksOpen /dev/sda3 sda3_crypt
sudo mount /dev/mapper/sda3_crypt /mnt/root
sudo mount /dev/sda1 /mnt/root/boot
sudo mount -t proc none /mnt/root/proc
sudo mount -o bind /dev /mnt/root/dev
sudo mount -o bind /run /mnt/root/run
sudo chroot /mnt/root /bin/bash

Po zakończeniu prac zamknij środowisko i odmontuj wszystko w odwrotnej kolejności:

exit
sudo umount /mnt/root/run
sudo umount /mnt/root/dev
sudo umount /mnt/root/proc
sudo umount /mnt/root/boot
sudo umount /mnt/root
sudo cryptsetup luksClose sda3_crypt