Jaki jest odpowiednik NSS systemu Linux w systemie OS X?

3

Każdy, kto zna wewnętrzne elementy systemu Linux, wie o NSS ; jest to podsystem, któremu usługi, takie jak gethostname()i takie, delegują. Kod, który faktycznie wysyła zapytania lub odczytuje DNS /etc/passwditp., Ma postać modułów NSS. Ponadto dodatkowe moduły NSS można skompilować i połączyć z nimi, umożliwiając programistom udostępnianie różnych sposobów wyszukiwania hostów, użytkowników itp.

Próbuję znaleźć równoważny podsystem w OS X, ale wydaje się, że był to coś, co zmieniało się często na przestrzeni lat. Najwyraźniej od czasów NeXtStep używany był stary system o nazwie NetInfo, ale nie było go od 10.4. Najwyraźniej zostało to zastąpione przez coś o nazwie lookupd, ale nie sądzę, że jest już obecne w Lionie, ponieważ w moim systemie nie działa proces odnośnika i man lookupdprzekierowuje do dscacheutil.

Jakiego obecnie systemu Lion używa do delegowania tego rodzaju wyszukiwań? Czy Apple udostępnia dokumentację do pisania nowych wtyczek dla dowolnego podsystemu, aby umożliwić różnym backendom świadczenie tych usług?

Innym sposobem myślenia o tym pytaniu jest : Który podsystem w OSX jest odpowiedzialny za czytanie /etc/hostsi rozwiązywanie wyszukiwań na podstawie jego zawartości?

Adrian Petrescu
źródło

Odpowiedzi:

4

Nie jestem zbyt obeznany z Linuksem, ale wygląda na to, że szukasz Open Directory . Ostrzeżenie: Apple używa tego terminu w odniesieniu do wszystkich różnych części architektury usług katalogowych, więc jeśli przejdziesz do Google „Open Directory”, znajdziesz zarówno serwer katalogowy oparty na LDAP firmy Apple, jak i demon działający w systemie OS X funkcja, której szukasz.

Pozwól, że spróbuję przedstawić historyczny przegląd jego rozwoju (i mam nadzieję, że zapamiętam, jakie zmiany miały miejsce w której wersji):

NextSTEP (system operacyjny, na którym oparty był OS X) miał demona o nazwie lookupd, który, jak rozumiem, był bardzo podobny do NSS. Większość rzeczywistych danych była przechowywana w bazach danych NetInfo (które mogą być lokalne na komputerze lub dostępne przez serwer z sieci).

Wczesne wersje OS X dodały kolejny demon, o nazwie DirectoryService, który zrobił podobne rzeczy (ale trochę inaczej); ponieważ nie zrobił wszystkiego, co zrobił lookupd, każde zapytanie, na które nie mogła znaleźć odpowiedzi, zostanie przekazane do lookupd. Wynik: pewna ilość redundancji i zamieszania. IIRC, w rzeczywistości były pewne zapytania, które najpierw skierowano do wyszukiwania, i może być konieczne przekazanie ich do DirectoryService. Były też dwa różne zestawy wtyczek (równoważne modułom NSS): te dla DirectoryService i te dla lookupd. Lokalni użytkownicy i grupy były nadal przechowywane w NetInfo, ale dla kont sieciowych było przestarzałe na korzyść LDAP.

Nie pamiętam już szczegółów, ale obowiązki związane z wersjami stopniowo przeniosły się z lookupd na DirectoryService.

W 10.5 NetInfo zostało usunięte; lokalni użytkownicy, grupy itp. były przechowywane w plikach listy właściwości XML w katalogu / var / db / dslocal /. Wtyczka (przepraszam, nazywają się teraz „łącznikami”), aby uzyskać do nich dostęp, ma nie ogólną nazwę „lokalną” (czasami jest to określane jako „dslocal”, aby ją nieco ujednolicić). W tym momencie jedyną rzeczą, za którą wyszukiwanie jest nadal odpowiedzialne, są wyszukiwania DNS (chociaż przekazuje wyszukiwanie multiemisji do mDNSResponder).

W 10.6 lookupd został usunięty; mDNSResponder obsługuje teraz wszystkie wyszukiwania DNS, zarówno standardowe (emisji pojedynczej), jak i multiemisji.

W wersji 10.7 demon Open Directory został przemianowany z DirectoryService na opendirectoryd.

Gordon Davisson
źródło
Niesamowite! Dzięki za tę superinformacyjną odpowiedź. Tylko ostatni punkt, czy to oznacza, że ​​poprawnym sposobem napisania odpowiednika modułu NSS w wersji 10.7 jest wtyczka Open Directory ?
Adrian Petrescu,
@Adrian: poprawne (a to jeszcze bardziej trafny link niż ten, który podałem).
Gordon Davisson