Wie Linux Benutzerkennwörter speichert und verwaltet
Haben Sie sich gefragt, wie Linux eine Mehrbenutzerumgebung effizient verwaltet? In diesem Artikel erklären wir, wie Linux Benutzerpasswörter und Logins speichert und verwaltet.
Durchsuchen der Datei /etc/passwd
Wenn ein Benutzer einen Benutzernamen und ein Passwort eingibt, vergleicht Linux das eingegebene Passwort mit einem Eintrag in mehreren Dateien im Verzeichnis „/etc“.
„/etc/passwd“ ist eine der wichtigsten Dateien, in der Benutzerdetails gespeichert werden.
Der letzte Eintrag in dieser Datei entspricht „Carbon“-Benutzern. Es gibt mehrere durch Doppelpunkte (:) getrennte Informationsfelder.
- Carbon: Name des Benutzers, für den dieser Eintrag gilt.
- x: zeigt an, dass für den Benutzer ein Passwort vorhanden ist. Das Passwort wird jedoch in der Datei „/etc/shadow“ gespeichert. Wenn statt x ein ! angezeigt wird Symbol zeigt an, dass kein Passwort vorhanden ist.
- 1000: Benutzer-ID dieses Benutzers.
- 1000: Gruppen-ID der Gruppe, zu der dieser Benutzer gehört.
- Kohlenstoff, , , : Angabe mehrerer Informationsfelder, einschließlich vollständigem Namen und Telefonnummern. Hier wurden keine Telefonnummern angegeben.
- /home/carbon: Speicherort des Home-Verzeichnisses, das diesem Benutzer zugewiesen ist.
- /bin/bash: Diesem Benutzer zugewiesene Standard-Shell.
Lassen Sie uns einen weiteren Benutzer erstellen, für den einige Telefonnummern gespeichert wurden. Der Benutzer „pluto“ wird mit dem Befehl adduser zum System hinzugefügt.
Wenn wir uns die Datei „etc/passwd“ noch einmal ansehen, können wir die vollständigen Informationen für den Benutzer „pluto“ sehen. Das Feld, das eine durch Kommas getrennte Liste vollständiger Namen und Nummern enthält, wird als „GECOS-Feld“ bezeichnet.
Wenn ein Benutzer erstellt wird, werden die Werte des Home-Verzeichnisses und der Standard-Shell, die zugewiesen werden müssen, in der Datei „/etc/adduser.conf“ angegeben.
Benutzer-IDs für erstellte Benutzer beginnen bei 1000 und reichen bis 59999.
Der Benutzer „carbon“ konnte die Einträge der Datei „/etc/passwd“ einfach mit dem Befehl cat einsehen. Werfen wir einen Blick auf seine Berechtigungen.
Nur der „root“-Benutzer kann in die Datei schreiben. Andere Benutzer können die Datei nur lesen. Da diese Datei für jedermann lesbar ist, ist es nicht ideal, Passwörter hier zu speichern. Stattdessen wird es in einer anderen Datei namens „/etc/shadow“ gespeichert.
Erkunden der Datei /etc/shadow
Versuchen wir nun, das gespeicherte Passwort für die Benutzer „carbon“ und „pluto“ in der Datei „/etc/shadow“ einzusehen.
Wenn wir uns die Berechtigungen für die Datei „/etc/shadow“ ansehen, sehen wir, dass nur der „root“-Benutzer die Datei lesen und schreiben kann. Außerdem können nur Mitglieder der Gruppe „Shadow“ die Datei lesen. In Wirklichkeit ist die Gruppe „Shadow“ leer, wird aber für diese Datei syntaktisch benötigt.
Wenn wir uns als „root“ anmelden, können wir die letzten zehn Zeilen von „/etc/shadow“ sehen. Für jeden Eintrag in „/etc/passwd“ gibt es einen entsprechenden Eintrag in dieser Datei. Das Format sieht folgendermaßen aus:
pluto:$6$JvWfZ9u....:18283:0:99999:7:::Auch in dieser Datei besteht jeder Eintrag aus mehreren, durch Doppelpunkte (:) getrennten Feldern. Entschlüsseln wir den Eintrag für den „Pluto“-Benutzer.
- pluto: Name des Benutzers, für den dieser Eintrag gilt.
- $6$JvWfZ9u.$yGFIqOJ.... : Das gehashte Benutzerkennwort wird zusammen mit Informationen über den verwendeten Hashing-Algorithmus gespeichert. Zusätzlich wird ein Salt-Wert zusammen mit dem Klartext-Passwort verwendet, um den Passwort-Hash zu generieren.
{ Klartext-Passwort, Salt} -> gehashtes PasswortLassen Sie uns den Inhalt dieses Feldes verarbeiten. Das $-Symbol wird als Trennzeichen zum Trennen von drei Feldern verwendet.
6 $ $JvWfZ9u. $yGFIqOJ....
- $6: der verwendete Hashing-Algorithmus. Hier ist die Liste möglicher Hashing-Algorithmen.
- $1: MD5
- 2a $: Kugelfisch
- 2 Jahre: Eksblowfish
- 5 $: SHA-256
- 6 $: SHA-512
- $JvWfZ9u. : Salzwert.
- $yGFIqOJ....: gehashtes Passwort.
Der resultierende Hashwert wird als verschlüsseltes Passwort für einen Benutzer gespeichert. Der Salzwert ist für jeden Benutzer einzigartig. Selbst wenn zwei Benutzer dasselbe Klartext-Passwort haben, würde die Verwendung eines eindeutigen Salt einen eindeutigen Hash-Wert generieren.
Im Anschluss an die restlichen Felder in diesem Eintrag:
- 18283: Gibt die Anzahl der Tage seit dem 1. Januar 1970 an, an denen das Passwort zuletzt geändert wurde
- 0: In diesem Feld wird die Anzahl der Tage angegeben, nach denen das Passwort geändert werden kann. Ein Wert von 0 bedeutet, dass das Passwort jederzeit geändert werden kann.
- 99999: Dieses Feld gibt die Anzahl der Tage an, nach denen das Passwort geändert werden muss. Der Wert 99999 gibt an, dass ein Benutzer das Kennwort so lange wie gewünscht behalten kann.
- 7: Wenn das Passwort so eingestellt ist, dass es abläuft, gibt dieses Feld die Anzahl der Tage an, nach denen der Benutzer über den Ablauf des Passworts gewarnt werden soll.
- : : : Drei weitere Felder sind Teil dieses Eintrags, obwohl sie hier leer sind. Der erste gibt die Anzahl der Tage an, die nach Ablauf des Passworts gewartet werden sollen, nach denen das Konto deaktiviert wird. Die zweite gibt die Anzahl der Tage seit dem 1. Januar 1970 an, in denen ein Konto deaktiviert wurde. Das dritte Feld ist für die zukünftige Verwendung reserviert. Die leeren Felder weisen darauf hin, dass das vorhandene Passwort für diesen Benutzer nicht abgelaufen ist und nicht bald ablaufen soll.
Die letzten sieben Felder, die sich auf die Gültigkeit von Passwörtern beziehen, sollen zusammenfassend Informationen über die „Password Aging Policy“ enthalten.
Die Standardwerte entsprechend „Password Aging Policy“ sind in der Datei „/etc/login.defs“ angegeben. Diese Werte können für einen Benutzer mit dem Änderungsbefehl geändert werden.
Wie sieht es mit Gruppeninformationen aus?
Benutzerinformationen und Passwörter werden in den Dateien „/etc/passwd“ und „/etc/shadow“ gespeichert. Ebenso werden Gruppeninformationen in der Datei „/etc/group“ gespeichert.
Oben sind die Gruppen hervorgehoben, die zu den Benutzern „carbon“ und „pluto“ gehören. Wenn ein Benutzer unter Linux erstellt wird, wird dieser Benutzer sofort einer Gruppe mit demselben Namen wie der Benutzername zugewiesen.
Mitglieder einer Gruppe können für gruppenbezogene Aktivitäten auch ein Gruppenpasswort teilen. Der Wert von x gibt an, dass sich die Passwortinformationen für diese Gruppe in der Datei „/etc/gshadow“ befinden.
Allerdings ist der Zugriff auf „/etc/gshadow“ auf den „root“-Benutzer beschränkt.
Der „root“-Benutzer kann die Einträge von „/etc/gshadow“ anzeigen, was „/etc/shadow“ ähnelt. Wenn wir uns den Eintrag für die Gruppe „Carbon“ ansehen, sehen wir, dass das zweite Feld den Wert ! hat, was darauf hinweist, dass für diese Gruppe kein Passwort existiert.
Alles zusammenfügen
Wenn sich ein Benutzer anmelden möchte, wird der Hash des eingegebenen Passworts anhand des Salt-Werts dieses Benutzers in „/etc/shadow“ ermittelt. Anschließend wird er mit dem gespeicherten Hash verglichen. Stimmen die Werte überein, erhält der Benutzer Zugriff.
Verwandt:
Schreibe einen Kommentar