Die Datei /etc/shadow speichert die verschlüsselten Passwörter aller Benutzerkonten auf der Kommandozeile. Sie ergänzt die Datei /etc/passwd und ist aus Sicherheitsgründen nur für den Root-Benutzer lesbar.
Warum /etc/shadow?
Früher wurden Passwort-Hashes direkt in /etc/passwd gespeichert. Da diese Datei für alle Benutzer lesbar sein muss (Programme benötigen Zugriff auf Benutzerinformationen), war das ein Sicherheitsrisiko. Die Lösung: Passwörter wanderten in die separate Datei /etc/shadow mit eingeschränkten Leserechten.
Die Datei gehört dem Benutzer root und der Gruppe shadow. Die Berechtigung ist typischerweise 640 (Lesen für root und shadow-Gruppe).
Inhalt anzeigen
Da nur Root Zugriff hat, benötigst du sudo:
sudo cat /etc/shadow
Die erste Zeile gehört in der Regel dem Root-Benutzer, gefolgt von System- und regulären Benutzerkonten.
Aufbau der Einträge
Jede Zeile repräsentiert ein Benutzerkonto. Die neun Felder sind durch Doppelpunkte getrennt:
mark:$6$.n.:17736:0:99999:7:::
| Feld | Bedeutung |
|---|---|
| 1 | Benutzername |
| 2 | Verschlüsseltes Passwort |
| 3 | Letzte Passwortänderung (Tage seit 1.1.1970) |
| 4 | Mindestalter des Passworts (Tage) |
| 5 | Maximales Passwortalter (Tage) |
| 6 | Warnfrist vor Ablauf (Tage) |
| 7 | Inaktivitätsfrist nach Ablauf (Tage) |
| 8 | Ablaufdatum des Kontos (Tage seit 1.1.1970) |
| 9 | Reserviert (unbenutzt) |
Das Passwort-Feld
Das verschlüsselte Passwort folgt dem Format $typ$salt$hash:
| Präfix | Hash-Algorithmus |
|---|---|
$1$ | MD5 (veraltet) |
$2a$ | Blowfish |
$2y$ | Eksblowfish |
$5$ | SHA-256 |
$6$ | SHA-512 (Standard) |
Sonderfälle im Passwort-Feld:
*oder!- Anmeldung per Passwort deaktiviert (SSH-Keys funktionieren weiterhin)!!- Konto wurde erstellt, aber noch kein Passwort gesetzt- Leer - Kein Passwort erforderlich (Sicherheitsrisiko)
Beispiel analysieren
webuser:$6$zHvrJMa5Y690smbQ$z5zdL...:18009:0:120:7:14::
Dieser Eintrag bedeutet:
- Benutzername: webuser
- Passwort: SHA-512 verschlüsselt
- Letzte Änderung: Tag 18009 (23. April 2019)
- Mindestalter: 0 (sofortige Änderung erlaubt)
- Maximales Alter: 120 Tage
- Warnfrist: 7 Tage vor Ablauf
- Inaktivitätsfrist: 14 Tage nach Ablauf wird das Konto deaktiviert
- Ablaufdatum: Keines gesetzt
Passwort-Einstellungen ändern
Bearbeite /etc/shadow nie direkt. Verwende stattdessen die vorgesehenen Befehle:
Passwort ändern:
sudo passwd benutzername
Passwort-Richtlinien anzeigen:
sudo chage -l benutzername
Maximales Passwortalter auf 90 Tage setzen:
sudo chage -M 90 benutzername
Warnfrist auf 14 Tage setzen:
sudo chage -W 14 benutzername
Konto zu einem bestimmten Datum ablaufen lassen:
sudo chage -E 2025-12-31 benutzername
Zusammenfassung
Die Datei /etc/shadow trennt sensible Passwort-Informationen von den allgemein lesbaren Benutzerdaten in /etc/passwd. Sie speichert verschlüsselte Passwörter und Richtlinien wie Ablaufzeiten und Warnfristen. Für Änderungen verwendest du die Befehle passwd und chage.