Was ist das Äquivalent von OS X zum NSS von Linux?

Jeder, der mit den Interna von Linux vertraut ist, kennt NSS ; Es ist das Subsystem, an das Dienste wie gethostname()und so weiter delegieren. Der Code, der tatsächlich DNS-Abfragen durchführt oder liest /etc/passwdusw., liegt in Form von NSS-Modulen vor. Darüber hinaus können zusätzliche NSS-Module kompiliert und verknüpft werden, sodass Entwickler verschiedene Möglichkeiten zum Suchen von Hosts, Benutzern usw. bereitstellen können.

Ich versuche, das entsprechende Subsystem in OS X zu finden, aber es scheint etwas zu sein, das sich im Laufe der Jahre häufig geändert hat. Anscheinend wurde seit NeXtStep-Tagen ein altes System namens NetInfo verwendet, aber das gibt es seit 10.4 nicht mehr. Dies wurde anscheinend durch etwas namens lookupd ersetzt, aber ich glaube, es ist auch nicht mehr in Lion vorhanden, da auf meinem System kein lookupd-Prozess läuft und man lookupdauf dscacheutil.

Was ist das aktuelle System, das Lion verwendet, um diese Art von Suchen zu delegieren? Stellt Apple eine Dokumentation zum Schreiben neuer Plugins für dieses Subsystem bereit, damit verschiedene Backends diese Dienste bereitstellen können?

Eine andere Möglichkeit, diese Frage zu beantworten, lautet : Welches Subsystem in OSX ist für das Lesen /etc/hostsund Auflösen von Suchvorgängen basierend auf seinem Inhalt verantwortlich?

Antworten (1)

Ich bin mit Linux nicht sehr vertraut, aber es hört sich so an, als würden Sie nach Open Directory suchen . Warnung: Apple verwendet diesen Begriff, um sich auf alle verschiedenen Teile ihrer Verzeichnisdienstarchitektur zu beziehen. Wenn Sie also „Open Directory“ googeln, finden Sie sowohl den LDAP-basierten Verzeichnisserver von Apple als auch den Daemon, der unter OS X ausgeführt wird und funktioniert die gesuchte Funktion.

Lassen Sie mich versuchen, Ihnen einen historischen Überblick über seine Entwicklung zu geben (und ich werde mich hoffentlich daran erinnern, welche Änderungen in welcher Version vorgenommen wurden):

NextSTEP (das Betriebssystem, auf dem OS X basierte) hatte einen Daemon namens lookupd, der, wie ich es verstehe, NSS sehr ähnlich war. Die meisten der tatsächlichen Daten wurden in NetInfo-Datenbanken gespeichert (die entweder lokal auf dem Computer sein oder über das Internet von einem Server aus zugänglich sein konnten).

Frühere Versionen von OS X fügten einen weiteren Dämon namens DirectoryService hinzu, der ähnliche Dinge tat (aber ein wenig anders); Da es nicht alles tat, was lookupd tat, würde jede Abfrage, auf die es keine Antwort finden konnte, an lookupd übergeben werden. Ergebnis: ein gewisses Maß an Redundanz und Verwirrung. IIRC, es gab tatsächlich einige Abfragen, die zuerst an lookupd gerichtet wurden, und diese müssen möglicherweise an DirectoryService übergeben werden. Es gab auch zwei verschiedene Sätze von Plug-Ins (äquivalent zu NSS-Modulen): die für DirectoryService und die für lookupd. Lokale Benutzer und Gruppen wurden weiterhin in NetInfo gespeichert, aber es wurde für Netzwerkkonten zugunsten von LDAP verworfen.

Ich erinnere mich nicht mehr an die Details, aber im Laufe der Versionen wurden die Verantwortlichkeiten nach und nach von lookupd auf DirectoryService verlagert.

In 10.5 wurde NetInfo entfernt; Lokale Benutzer, Gruppen usw. wurden in XML-Eigenschaftslistendateien unter /var/db/dslocal/ gespeichert. Das Plug-In (entschuldigen Sie, sie heißen jetzt "Konnektoren"), um darauf zuzugreifen, hat den keineswegs allgemeinen Namen "Local" (es wird manchmal als "dslocal" bezeichnet, um es ein wenig zu verdeutlichen). Zu diesem Zeitpunkt ist lookupd nur noch für DNS-Lookups verantwortlich (obwohl es Multicast-Lookups an mDNSResponder übergibt).

In 10.6 wurde lookupd entfernt; mDNSResponder verarbeitet jetzt alle DNS-Lookups, sowohl Standard (Unicast) als auch Multicast.

In 10.7 wurde der Open Directory-Daemon von DirectoryService in opendirectoryd umbenannt.

Eindrucksvoll! Danke für diese superinformative Antwort. Nur ein letzter Punkt, bedeutet dies, dass die korrekte Art, das Äquivalent eines NSS-Moduls in 10.7 zu schreiben, ein Open Directory-Plug-in ist ?
@ Adrian: richtig (und das ist ein noch relevanterer Link als der, den ich bereitgestellt habe).