Jeśli /etc/nsswitch.conf
ma:
passwd: files ldap
ten wiersz w nim i robię getent passwd
czy najpierw spłynie /etc/passwd
list, a następnie przejść przez każdego użytkownika w LDAP? Wygląda na to, że tak się dzieje.
Wypróbowałem to na serwerze Red Hat i przewijało tysiące wierszy, gdy /etc/passwd
ma tylko 36 wierszy.
Komentarze
Odpowiedź
getent
zwróci wyniki dla dowolnej określonej „bazy danych”. Na podstawie zawartości /etc/nsswitch.conf
określa, jakich backendów użyć podczas tworzenia tej „bazy danych”.
getent
wyświetla swoje „bazy danych”, gdy pytasz o stronę użycia, getent --help
.
Supported databases: ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups netgroup networks passwd protocols rpc services shadow
O ile mi wiadomo, nie ma wa y, aby wyłączyć jego zachowanie polegające na dostarczaniu wszystkich wyników dla różnych backendów skonfigurowanych w /etc/nsswitch.conf
.
getent
i /etc/nsswitch.conf
są częścią nss (Name Service Switch).
Fragment strony podręcznika nss
Każde wywołanie funkcji, która pobiera dane z systemowej bazy danych, takiej jak baza danych haseł lub grup, jest obsługiwane przez implementację Name Service Switch w bibliotece GNU C. Różne dostarczane usługi są implementowane przez niezależne moduły, z których każdy naturalnie znacznie różni się od innych.
Domyślne implementacje dostarczane z biblioteką GNU C są domyślnie konserwatywne i nie używają niebezpiecznych danych. W niektórych sytuacjach może to być bardzo kosztowne, zwłaszcza gdy bazy danych są duże. Niektóre moduły pozwalają administratorowi systemu zażądać korzystania ze skrótów, jeśli są one znane jako bezpieczne. To administrator systemu jest odpowiedzialny za upewnienie się, że założenie jest poprawne.
Istnieją inne moduły, w których implementacja zmieniała się w czasie. preferencje są przełączane.
Backendy
Jest ich wiele, zbyt wiele, aby je tutaj omówić. Ale wystarczy powiedzieć, że to backendy takie jak sssd
(sss / LDAP), NIS i NIS + żeby wymienić tylko kilka.
W zależności od tego, który system określił w /etc/nsswitch.conf
plik, wpłynie na to, jakie wyjście getent
pokazuje, kiedy dana „baza danych” jest odpytywana, na przykład getent passwd
.
Referencje
Komentarze
- Link do sssd howto nie działa.
- @GhostLyrics – zmieniony link
Odpowiedz
Tak, jeśli powiesz getent passwd
, wyświetli listę wszystkich użytkowników, których może znaleźć, w dowolnej z baz danych wymienionych w nsswitch.
Komentarze
- tylko dla dostawców NSS, którzy włączają wyliczanie. Na przykład, używając
sss
, możesz wyłączyć wyliczanie dla niektórych domen.
getent passwd
wyświetli wszyscy użytkownicy (lokalni + ldap)