Was ist die Bibliothek libnss_dns.so und libnss_files.so? Welche Abhängigkeit haben sie von OpenSSH?

Was ist die Bibliothek libnss_dns.so und libnss_files.so? Welche Abhängigkeit haben sie von OpenSSH?

Ich versuche, mich über meinen PC mit Putty per SSH mit meinem Board (Imx6 Humming Board) zu verbinden. Unmittelbar nach der Anmeldeaufforderung in Putty erhalte ich die Meldung „Netzwerkverbindung unerwartet geschlossen“. Das Ersetzen dieser beiden Bibliotheken im Root-Dateisystem löst das Problem. Warum verursachen diese Dateien ein Problem und welche Abhängigkeit haben sie von SSH? Für jede Hilfe zu diesen beiden Bibliotheksdateien wäre ich dankbar.

Antwort1

libnss_files.so ist die Bibliothek, die tatsächlich /etc/passwd, /etc/group, /etc/hosts liest. Ohne sie können Programme Benutzernamen und Benutzer-IDs nicht nachschlagen – OpenSSH kennt Ihre UID und Ihr Home-Verzeichnis nicht; tatsächlich weiß es nicht, dass Sie existieren.

Ebenso ist libnss_dns.so die Bibliothek, die DNS-Abfragen durchführt. Es ist nicht die einzige DNS-Bibliothek auf Ihrem System, aber es ist diejenige, die die allgemeinen Funktionen zum Auflösen einer Domäne in eine Adresse verarbeitet, die die meisten Programme verwenden.


Im Allgemeinen handelt es sich dabei um Glibc-Module, die Verzeichnisinformationsabfragen aus DNS bzw. Dateien verarbeiten. „Verzeichnisinformationen“ bedeutet hier 1) Benutzerkonten, wie in /etc/passwd oder /etc/group, und 2) Hostnamen, wie in DNS oder /etc/hosts. (Mit anderen Worten: Verzeichnis wie in einem Telefonbuch – nicht Verzeichnis wie in einem Dateiordner.)

DerlibcDie Standardbibliothek, die von in C geschriebenen Programmen verwendet wird, verfügt über generische Funktionen zum Nachschlagen von Verzeichnisinformationen unabhängig von der Quelle. Das heißt, die eigentlichen Programme müssen sich nicht um DNS oder /etc kümmern – sie rufen einfach die libc-Funktion auf, um einen Benutzernamen (oder einen Hostnamen, eine Gruppe oder einen TCP-Port ...) nachzuschlagen, und libc ruft ihn aus der jeweils geeigneten Quelle ab.

Glibc, die auf den meisten Linux-Systemen verwendete libc, hatmodularInformationsquellen – der Systemadministrator kann neue hinzufügen, sie neu anordnen usw. Anstatt dass der libc-„Kern“ die Einzelheiten von /etc/passwd oder /etc/hosts kennt, delegiert er diese Aufgabe an das Modul „libnss_files“ – und ebenso befinden sich die Kenntnisse über DNS im Modul „libnss_dns“.

Wenn ein Programm einen Domänennamen auflösen muss, durchläuft libc jedes in /etc/nsswitch.conf konfigurierte Modul – zuerst fragt es das Modul „files“ (das /etc/hosts überprüft), dann das Modul „dns“ (das DNS überprüft), bis es eine Antwort erhält. Möglicherweise gibt es weitere Module für mDNS („.local“-Domänen), NetBIOS usw.

Wenn ein Programm einen Benutzernamen in eine UID oder eine UID in einen Benutzernamen auflösen muss, fordert libc das Modul „files“ auf, Benutzer aus /etc/passwd abzurufen. (Auch hier kann es andere Module wie „ldap“, „pgsql“ oder „nis“ geben, die Benutzerkontoinformationen aus alternativen Quellen abrufen.)

verwandte Informationen