Format der »/etc/shadow«

Die Datei »/etc/shadow« gehört mit den Dateien »/etc/passwd« und »/etc/group« zum Benutzerverwaltungssystem.1) Die Datei »/etc/shadow« bildet hierbei die Kernkomponente bzgl. der Passwörter. Hier werden neben dem gehashten Passwort auch Informationen bzgl. der Passwortrichtlinien pro User untergebracht. Früher wurde das gehashte Passwort zusammen mit dem Useraccout in der Datei »/etc/passwd« untergebracht, was allerdings zunehmend als Sicherheitsproblem wahrgenommen wurde, weil die »/etc/passwd« für jeden User lesbar sein muss. Deshalb wurden die sicherheistrelevanten Informationen in die »/etc/shadow« verlegt, welche nur vom Benutzer »root« gelesen werden darf.

Der Aufbau der Datei »/etc/shadow«:

/etc/shadow

pronto:$1$hCmMb2Ix$bAGVIJKYfBKavZt5Ee9ZL/:15050:0:99999:7:::

Der verwendete Algorithmus, das verwendete Salt und der Passworthash werden mit einem »$«-Zeichen als Delimiter2) getrennt, bei den übrigen Werten wird der Doppelpunkt (»:«) als Delimiter verwendet.

Wert Bedeutung
pronto: Entspricht dem Username, wie er auch in der »/etc/passwd« zu finden ist
$1$ Entspricht dem Algorithmus, welcher für die Erstellung des Hashwertes verwendet wurde. »$1$« steht für → »md5«, »$2$« → »Blowfish«, »$5$« → »SHA-256« und »$6$« → »SHA-512« als verwendeten Algorithmus.
hCmMb2Ix Dies ist das »Salt«3) welches verwendet wird, um dem Algorithmus zum Erstellen des Hash Wertes eines Passworts eine zufällige Komponente mitzugeben. Andernfalls würde der Algorithmus bei gleichem Passwort auch immer den gleichen Hash Wert erzeugen, was ebenfalls ein Sicherheitsproblem wäre.
bAGVIJKYfBKavZt5Ee9ZL/ Der eigentliche Hashwert des Passworts
15050 Die Tage seit dem 01.01.1970 wo das Passwort als letztes geändert wurde. Diese Zählweise ist bei Computerzeitangaben nicht unüblich und wird auch »UNIX-Zeit«, »POSIX-Zeit« oder »Epoch« genannt.4)
0 Die Anzahl der Tage bevor das Passwort geändert werden kann. Eine »0« bedeutet, es kann jederzeit geändert werden.
99999 Die Anzahl der Tage nachdem das Passwort geändert werden muss. Eine »99999« bedeutet, dass das Passwort nie abläuft und nie geändert werden muss
7 Die Anzahl der Tage nachdem ein Account deaktiviert wird, wenn der ggf. eingestellte Zeitraum für den Passwortwechsel nicht eingehalten wurde.
:: Die Anzahl der Tage, welcher der Account bereits gesperrt ist. Hier im Beispiel ein leeres Feld, welches signalisiert, dass der Account aktiv ist.
:: Ein Reservefeld




Welcher Algorithmus verwendet wird, kann in den Dateien »/etc/login.defs« und »/etc/pam.d/common-password« eingestellt werden:

/etc/login.defs

~~~snip~~~
# If set to MD5 , MD5-based algorithm will be used for encrypting password
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
# If set to DES, DES-based algorithm will be used for encrypting password (default)
# Overrides the MD5_CRYPT_ENAB option
#
# Note: It is recommended to use a value consistent with
# the PAM modules configuration.
#
ENCRYPT_METHOD MD5
~~~snap~~~

/etc/pam.d/common-password

~~~snip~~~
# here are the per-package modules (the "Primary" block)
password [success=1 default=ignore] pam_unix.so obscure md5
~~~snap~~~

Verwandte Artikel:
-> Windows Server 2008r2: Kennwortrichtlinie bearbeiten

pronto 2011/03/17 13:34