passwd to komenda Linux do zmiany hasła użytkownika. Używasz jej, gdy: chcesz zmienić własne hasło (bezpieczeństwo), administrator wymusza zmianę, zapomniałeś hasło innego użytkownika (jako root), konfigurujesz nowe konto na serwerze, lub automatyzujesz politykę haseł.
W tym poradniku pokazuję jak użyć passwd na Linux — zmiana własnego hasła, hasła innego użytkownika, wymuszenie zmiany przy logowaniu, polityka haseł i reset hasła root.
Spis treści
ToggleZmiana własnego hasła
passwd
System poprosi o:
- Aktualne hasło (Current password) — wpisujesz stare hasło (nie widać znaków — to normalne w Linux)
- Nowe hasło (New password) — wpisujesz nowe
- Potwierdzenie (Retype new password) — wpisujesz nowe ponownie
$ passwd
Changing password for user jan.
Current password: ********
New password: ********
Retype new password: ********
passwd: password updated successfully
Hasło musi spełniać wymagania systemu (domyślnie: min. 8 znaków, nie za proste, nie słownikowe). Jeśli jest za słabe, passwd odrzuci i poprosi o inne.
Zmiana hasła innego użytkownika (jako root)
sudo passwd nazwauzytkownika
Przykład:
sudo passwd anna
New password: ********
Retype new password: ********
passwd: password updated successfully
Root (lub użytkownik z sudo) nie musi znać starego hasła — ustawia nowe bezpośrednio. Przydatne gdy: pracownik zapomniał hasło, tworzysz nowe konto, resetujesz hasło po incydencie bezpieczeństwa.
Zmiana hasła root
sudo passwd root
Ustawia nowe hasło konta root. Na systemach, które domyślnie blokują logowanie root (Ubuntu): to odblokuje konto root. Na serwerach VPS: root zwykle ma hasło od początku — zmieniasz je natychmiast po pierwszym logowaniu.
Wymuszenie zmiany hasła przy następnym logowaniu
sudo passwd -e nazwauzytkownika
-e (expire) = oznacz hasło jako wygasłe. Przy następnym logowaniu system wymusi zmianę hasła. Przydatne po: resecie hasła przez admina (żeby użytkownik sam ustawił swoje), naruszeniu bezpieczeństwa (wymuś zmianę u wszystkich).
# Wymuś zmianę hasła dla wszystkich użytkowników:
for user in $(cut -d: -f1 /etc/passwd); do sudo passwd -e $user; done
Blokowanie i odblokowywanie konta
# Zablokuj konto (użytkownik nie może się zalogować):
sudo passwd -l nazwauzytkownika
# Odblokuj konto:
sudo passwd -u nazwauzytkownika
-l (lock) dodaje ! przed hashem hasła w /etc/shadow — hasło przestaje działać, ale konto istnieje. -u (unlock) usuwa !. Przydatne: pracownik odchodzi → lock → dane zachowane, ale dostęp zablokowany.
Sprawdzenie statusu hasła
sudo passwd -S nazwauzytkownika
Wynik: jan P 04/20/2026 0 99999 7 -1
- P = hasło ustawione (Password). L = zablokowane (Locked). NP = brak hasła.
- 04/20/2026 = data ostatniej zmiany hasła
- 0 = min. dni między zmianami
- 99999 = max. dni ważności (99999 = nigdy nie wygasa)
- 7 = dni ostrzeżenia przed wygaśnięciem
Polityka haseł — chage
chage (change age) to komenda do konfiguracji polityki wygasania haseł — uzupełnia passwd o zarządzanie terminami:
# Hasło wygasa co 90 dni:
sudo chage -M 90 nazwauzytkownika
# Min. 7 dni między zmianami (anty-cycling):
sudo chage -m 7 nazwauzytkownika
# Ostrzeżenie 14 dni przed wygaśnięciem:
sudo chage -W 14 nazwauzytkownika
# Konto wygasa 31 grudnia 2026:
sudo chage -E 2026-12-31 nazwauzytkownika
# Pokaż pełną politykę:
sudo chage -l nazwauzytkownika
Wynik chage -l:
Last password change : Apr 20, 2026
Password expires : Jul 19, 2026
Password inactive : never
Account expires : Dec 31, 2026
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 14
Gdzie Linux przechowuje hasła — /etc/shadow
Hasła NIE są przechowywane w /etc/passwd (mimo nazwy). Przechowuje je /etc/shadow — plik dostępny tylko dla root:
sudo cat /etc/shadow | grep jan
# jan:$6$rounds=656000$salt$hash...:19467:0:99999:7:::
$6$= algorytm SHA-512 (standard)rounds=656000= liczba iteracji hashowania (brute force jest wolniejszy)salt= losowa sól (unikatowa per użytkownik)hash= zahashowane hasło
Hasła w Linux są hashowane (jednokierunkowe) — nie da się „odczytać” hasła z /etc/shadow. System przy logowaniu hashuje wpisane hasło i porównuje z zapisanym hashem. Jeśli się zgadzają — logowanie udane.
Reset zapomnianego hasła root (bez dostępu)
Jeśli zapomniałeś hasło root i nie masz innego konta z sudo:
Metoda 1. GRUB recovery mode
- Zrestartuj serwer.
- W menu GRUB: wybierz „Advanced options” → „Recovery mode” → „root shell”.
- Zamontuj system plików z prawem zapisu:
mount -o remount,rw / - Zmień hasło:
passwd root - Reboot:
reboot
Metoda 2. VPS — konsola KVM/VNC w panelu hostingu
Większość dostawców VPS (DigitalOcean, Hetzner, OVH, cyber_Folks) oferuje konsolę KVM/VNC w panelu — łączysz się z serwerem „jak przy monitorze”, pomijając SSH. Tam: GRUB → recovery → zmiana hasła.
Metoda 3. Live USB / rescue mode
Dla serwerów fizycznych: bootuj z Live USB (Ubuntu Live), zamontuj partycję systemową, edytuj /etc/shadow (usuń hash hasła root = logowanie bez hasła) → reboot → ustaw nowe hasło.
Dobre praktyki — bezpieczeństwo haseł na serwerze
- Zmień hasło root natychmiast po pierwszym logowaniu na nowy VPS
- Używaj kluczy SSH zamiast haseł — klucz SSH jest bezpieczniejszy niż jakiekolwiek hasło.
PasswordAuthentication now/etc/ssh/sshd_config - Wymuś silne hasła — zainstaluj
libpam-pwquality:sudo apt install libpam-pwquality→ konfiguracja w/etc/security/pwquality.conf(min. długość, wymagane klasy znaków) - Polityka wygasania —
chage -M 90dla kont serwisowych - Nie używaj konta root do codziennej pracy — sudo zamiast root login
- Fail2ban — blokuj IP po kilku nieudanych próbach logowania SSH
Najczęściej zadawane pytania
Jak zmienić hasło bez znajomości starego?
Jako root lub sudo: sudo passwd nazwauzytkownika — nie pyta o stare hasło. Jako zwykły użytkownik: nie da się — musisz znać aktualne hasło, żeby je zmienić (lub poprosić admina).
Czy passwd zmienia hasło natychmiast?
Tak — zmiana jest natychmiastowa. Od następnego logowania obowiązuje nowe hasło. Aktywne sesje SSH nie są przerywane — ale nowe logowania wymagają nowego hasła.
Jak ustawić hasło na puste (brak hasła)?
sudo passwd -d nazwauzytkownika — usuwa hasło (-d = delete). Użytkownik loguje się bez hasła. Nie rób tego na serwerze dostępnym z internetu — to zaproszenie dla hakerów.
passwd na macOS?
macOS nie używa klasycznego passwd. Zmiana hasła: Preferencje systemowe → Użytkownicy i grupy → Zmień hasło. Z terminala: dscl . -passwd /Users/nazwauzytkownika lub System Preferences.
Podsumowanie
passwd to 3 komendy, które musisz znać: passwd (zmień swoje hasło), sudo passwd user (zmień hasło innego użytkownika), sudo passwd -e user (wymuś zmianę przy logowaniu). Do polityki wygasania: chage -M 90 user. Do blokowania: passwd -l user. I najważniejsze: na serwerze używaj kluczy SSH zamiast haseł — to jedyny sposób na naprawdę bezpieczny dostęp.






