Shadow im Detail

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

Die Zeichen *, ! und !* im Passwortfeld der Datei /etc/shadow sehen ähnlich aus, bedeuten aber leicht unterschiedliche Zustände.


🧩 Aufbau von /etc/shadow

Eine Zeile sieht etwa so aus:

username:password:lastchg:min:max:warn:inactive:expire:reserved

Das zweite Feld (password) enthält:

  • den Hash des Passworts, wenn eines gesetzt ist (z. B. $6$abc123...)
  • oder ein Sperrzeichen (*, !, !*), wenn kein Login über Passwort erlaubt ist



🔒 Bedeutung der einzelnen Zeichen

Zeichen Bedeutung Technischer Effekt
* Nie ein Passwort gesetzt oder absichtlich komplett blockiert Kein Passwort akzeptiert. Der Account ist nicht verwendbar für Passwort-Login. Typisch bei Systemkonten (daemon, nobody, www-data).
! Passwort-Login gesperrt, aber ursprünglicher Hash bleibt erhalten Wenn du passwd -l user verwendest, wird einfach ein ! vor den vorhandenen Hash gesetzt. So kann man das Konto später leicht mit passwd -u user wieder entsperren.
!* Doppelt gesperrt (manuell oder durch mehrfaches Sperren) Kommt vor, wenn man einen bereits mit * versehenen Eintrag nochmal mit passwd -l sperrt. Das Ergebnis ist !* (also ! vor dem *). Funktional identisch mit „voll gesperrt“. Kein Login möglich.



🧠 Beispiel zur Verdeutlichung

Ausgang Kommando Ergebnis in /etc/shadow Bedeutung
$6$abc... passwd -l user !$6$abc... Temporär gesperrt, Hash bleibt vorhanden
!$6$abc... passwd -u user $6$abc... Wieder entsperrt
* passwd -l user !* Schon vorher gesperrt → bleibt gesperrt
!* passwd -u user * Entsperren entfernt nur das führende !, bleibt blockiert



🧰 Praxis-Tipps

  • Dauerhaft blockierte Systemkonten: * → sicher, kein versehentliches Entsperren möglich.
  • Temporär gesperrte Benutzerkonten: ! → kann mit passwd -u user leicht rückgängig gemacht werden.
  • !*: eher ein „artefakt“ von wiederholtem Sperren – du kannst es behandeln wie *: vollständig gesperrt.

Befehl: passwd

Usage: passwd [options] [LOGIN]

Options:
  -a, --all                     report password status on all accounts
  -d, --delete                  delete the password for the named account
  -e, --expire                  force expire the password for the named account
  -h, --help                    display this help message and exit
  -k, --keep-tokens             change password only if expired
  -i, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --lock                    lock the password of the named account
  -n, --mindays MIN_DAYS        set minimum number of days before password
                                change to MIN_DAYS
  -q, --quiet                   quiet mode
  -r, --repository REPOSITORY   change password in REPOSITORY repository
  -R, --root CHROOT_DIR         directory to chroot into
  -P, --prefix PREFIX_DIR directory prefix
  -S, --status                  report password status on the named account
  -u, --unlock                  unlock the password of the named account
  -w, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS
  -x, --maxdays MAX_DAYS        set maximum number of days before password
                                change to MAX_DAYS

Der Befehl passwd -S (unter Linux/Unix) zeigt dir den Status eines Benutzerpassworts in kompakter Form an.



Allgemeine Syntax:

passwd -S [BENUTZERNAME]

📋 Beispiel-Ausgabe:

user1 P 10/01/2023 0 99999 7 -1

🔍 Bedeutung der Felder:

Feld Nr. Bedeutung
1 Benutzername
2 Passwortstatus:
- P = Passwort gesetzt (enabled)
- L = Konto gesperrt (locked)
- NP = Kein Passwort gesetzt (No Password)
3 Letztes Passwortänderungsdatum (Format: TT/MM/JJJJ)
4 Minimale Anzahl von Tagen, bevor Passwort geändert werden darf
5 Maximale Anzahl von Tagen, bevor Passwort geändert werden muss
6 Anzahl der Tage vor Ablauf, an dem der Benutzer gewarnt wird
7 Inaktiv-Tage nach Ablauf, bevor Konto deaktiviert wird (-1 = nie)



🧪 Beispiel erklärt:

user1 P 10/01/2023 0 99999 7 -1
  • user1 → Benutzername
  • P → Passwort ist aktiv
  • 10/01/2023 → Letzte Änderung am 10.01.2023
  • 0 → Sofortige Änderung möglich
  • 99999 → Praktisch nie ablaufend
  • 7 → 7 Tage vorher wird gewarnt
  • -1 → Konto wird nie automatisch deaktiviert



🔧 Nützlich für:

  • Admins, um den Status von Benutzerkonten schnell zu prüfen
  • Skripte, die den Passwortstatus abfragen
  • Überwachung von Passwort-Richtlinien