GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Zweck von /etc/shadow und Shadow-Cache-Dateien im Linux-Betriebssystem?

Von Anfang an haben Unix und Unix-ähnliche Betriebssysteme (einschließlich Linux) Passwörter immer als kryptografische Hashes gespeichert (1). Diese Hashes wurden ursprünglich in /etc/passwd gespeichert , aber diese Datei musste weltweit lesbar sein, um die Informationen für andere Zwecke verfügbar zu machen - selbst ein einfacher ls -l muss /etc/passwd lesen um die numerische Benutzer-ID jedes Dateieigentümers zur Anzeige in seinen Benutzernamen umzuwandeln. Da die gehashten Passwörter jedoch in einer allgemein lesbaren Datei vorhanden waren, konnten böswillige Benutzer diese Hashes leicht erlangen und versuchen, verwendbare Passwörter(2) für die Konten anderer Benutzer zu generieren.

Um dies zu verhindern, wurden die gehashten Passwörter schließlich in eine Datei verschoben, die nur von root (und gelegentlich einer privilegierten Gruppe von Administratoren) gelesen werden kann, /etc/shadow . Dies verbirgt die Hashes vor normalen Benutzern des Systems, während sie für Benutzerauthentifizierungszwecke verfügbar bleiben.

Notizen :

  1. Umständlich, ich weiß, aber die gespeicherten Passwörter sind es nicht verschlüsselt. Sie werden mit einem kryptografisch sicheren (zumindest zum Zeitpunkt der Erstellung) Hashing-Algorithmus gehasht. Die wichtigsten hier relevanten Unterscheidungen sind, dass Hashes eine feste Länge haben (die Länge des verschlüsselten Textes variiert je nach Länge des verschlüsselten Textes) und nicht umkehrbar sind (verschlüsselter Text kann entschlüsselt werden, gehashter Text nicht).

  2. Da Hashes eine feste Länge haben, gibt es eine unendliche Anzahl von Eingaben, die mit jeder gegebenen Hash-Darstellung übereinstimmen. Ein Angreifer könnte daher ein funktionierendes Passwort finden, das nicht unbedingt mit dem Passwort des Besitzers identisch ist – obwohl dies angesichts der Größe moderner Krypto-Hashes sehr unwahrscheinlich ist.


Die /etc/shadow Datei wurde aus Sicherheitsgründen erstellt und enthält das verschlüsselte Passwort jedes Benutzers.

Ursprünglich wurde das verschlüsselte Passwort in /etc/passwd gespeichert . /etc/passwd musste weltweit lesbar sein, damit das System Benutzer-IDs Benutzernamen zuordnen konnte und damit Benutzer Informationen über einander herausfinden konnten, z. das Home-Verzeichnis des anderen Benutzers oder seine Telefonnummer, die traditionell im "gecos"-Feld gespeichert und vom "finger"-Dienstprogramm angezeigt wurde.

Aber dann erkannten die Leute, dass dies ein Sicherheitsproblem war. Jeder mit genügend Zeit könnte einen sogenannten Brute-Force-Angriff durchführen, indem er programmgesteuert verschlüsselte Passwörter für jedes mögliche Passwort generiert. Wenn der Angreifer das getan hat, ohne tatsächlich versucht zu haben, sich über telnet anzumelden oder ssh , konnte das System nicht wissen, dass es angegriffen wurde.

Also wurde das verschlüsselte Passwort in den neu erstellten /etc/shadow verschoben , die nur von root gelesen werden kann.

Es enthält auch andere Informationen, die der /etc/passwd Datei wurde in Bezug auf das Konto und das Passwort des Benutzers nicht unterstützt, z. wann das Passwort zuletzt geändert wurde und wann es abläuft.

Siehe man 5 shadow (Webversion) für alle Details des Dateiformats.

Ob es bei SUSE genauso ist, kann ich nicht sagen, ohne zu wissen, mit welcher SUSE-Version Sie es zu tun haben. Beispielsweise kann Ihr SUSE-System Blowfish anstelle von MD5 verwenden.

Sie haben auch angedeutet, dass Sie Ihre /etc/shadow gemischt haben Datei mit einem System, auf dem eine andere Linux-Distribution läuft, hat aber nicht gesagt, was die andere Distribution war.

Siehe beispielsweise Probleme beim Migrieren von Schattendateien von SuSE 9.3 auf Ubuntu Server x86_64.

Um es herauszufinden, öffnen Sie /etc/shadow und prüfen Sie, ob das verschlüsselte Passwortfeld mit $1$ beginnt oder $2$ . Wenn es $1$ enthält , dann ist es MD5 und mit den meisten anderen Distributionen kompatibel. Wenn es $2$ enthält , dann ist es laut Blowfish-Schattendateien auf Debian wahrscheinlich Blowfish.

Wenn Sie Ubuntu verwenden, könnte das erste Google-Suchergebnis für Ubuntu Blowfish ein guter Ausgangspunkt sein.


Benutzer sind im /etc/passwd aufgeführt Datei. Diese Datei enthält viele Informationen, die vom System nicht nur verwendet werden, um Benutzern die Anmeldung zu ermöglichen.

Jede Zeile entspricht einer Benutzereingabe und verschiedene Felder werden durch Doppelpunkte getrennt. Das erste Feld ist das Login, gefolgt vom dazugehörigen Passwort.

Früher wurden in diesem Feld verschlüsselte Passwörter gespeichert. Allerdings ist die /etc/passwd Die Datei muss von jedem auf dem System lesbar sein, sodass die Verschlüsselung Brute-Force-Angriffe nicht verhindert, wie von @Mikel gesagt wurde. Die Lösung bestand darin, diese verschlüsselten Passwörter in eine nur für Root lesbare Datei zu verschieben:/etc/shadow .

Also /etc/shadow enthält die verschlüsselten Passwörter der Benutzer des Systems. Das System weiß, dass es in dieser Datei nach Passwörtern suchen muss, wenn Passwortfelder in /etc/passwd sind nur ein x enthalten (was "Kreuz bedeutet nach /etc/shadow")


Linux
  1. So verwenden Sie das Auditing-System unter Linux – Konfigurieren, Audit-Protokolle und Generieren von Berichten

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Linux – Zweck des Verzeichnisses /net?

  4. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

  5. Wie kann ich die Datei /etc/shadow und /etc/passwd mit Auditd auf Änderungen überwachen?

Der richtige Weg zum Bearbeiten von /etc/passwd- und /etc/group-Dateien unter Linux

Was ist das Linux-Dateisystem? Einfache Anleitung

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Was ist die Datei /etc/passwd unter Linux?

Verstehen der /etc/fstab-Datei unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen