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
- Zrestartuj komputer i wywołaj menu GRUB (przytrzymaj Shift lub wciskaj Esc na UEFI).
- Wybierz „Advanced options for Ubuntu”, następnie pozycję z dopiskiem „(recovery mode)”.
- 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
- Zrestartuj komputer, wejdź do menu GRUB i zaznacz domyślny wpis rozruchowy.
- Naciśnij e, odszukaj linię zaczynającą się od „linux”, „linux16” lub „linuxefi”.
- 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
- Pobierz obraz Live (np. Ubuntu Live, Fedora Live) i przygotuj pendrive narzędziem Rufus, Etcher lub komendą dd.
- Uruchom komputer z USB/DVD wybierając urządzenie w menu BIOS/UEFI (np. F12, F10, Del).
- 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+
- W GRUB edytuj wpis i dodaj rd.break do linii jądra.
- 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
- W GRUB dodaj parametr single/s/S/1 do linii jądra i uruchom system.
- 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