Uruchamiasz id alice na serwerze, konto istnieje w katalogu firmy, ale grep alice /etc/passwd nie zwraca niczego. Zanim dojdziesz do wniosku o braku konta, spójrz na widok, który Linux rzeczywiście wykorzystuje.
getent pyta bazy zdefiniowane w NSS, mechanizmie, który może łączyć lokalne pliki, SSSD, LDAP lub inny serwis tożsamości. Dzięki temu możesz sprawdzić, czy system rozwiązuje konto, grupę i jej identyfikator numeryczny, nie zmieniając konfiguracji.

Dlaczego /etc/passwd nie zawsze daje odpowiedź
Na lokalnej maszynie /etc/passwd często zawiera wszystkie oczekiwane konta. Na serwerze połączonym z LDAP lub Active Directory przy użyciu SSSD, ten plik zachowuje konta lokalne, podczas gdy konta zdalne pojawiają się przez NSS.
Polecenie getent passwd korzysta z NSS, aby rozwiązać bazę passwd z użyciem źródeł i kolejności zdefiniowanej w /etc/nsswitch.conf.
grep '^passwd:' /etc/nsswitch.conf
grep '^group:' /etc/nsswitch.conf
Linia taka jak passwd: files systemd sss wskazuje, że Linux najpierw sprawdza lokalne pliki, następnie usługę systemową, a na końcu SSSD. Nie kopiuj tego porządku do swojej konfiguracji: zależy on od dystrybucji i już istniejącej integracji.
Szukaj konta za pomocą getent
Użyj dokładnej nazwy logowania, nie wyświetlając całej bazy. W dużym katalogu samo getent passwd może wygenerować długą i niepotrzebną informację.
getent passwd alice
getent passwd 10542
Jeżeli konto zostało rozwiązane, wyjście będzie w standardowym formacie: nazwa, wskaźnik hasła, UID, GID, pole opisowe, katalog domowy i powłoka. Konto LDAP lub SSSD może więc tutaj się pojawić, podczas gdy pozostało nieobecne w /etc/passwd.
Brak wyjścia oznacza tylko, że NSS nie znajduje tej pozycji w obecnej konfiguracji. Taki wynik nie naprawia awarii LDAP, nie opróżnia pamięci podręcznej SSSD ani nie jest błędem w żądanej nazwie.
Sprawdzanie grupy i tożsamości efektywnej
Widoczne konto nie gwarantuje, że jego grupy są poprawne. Sprawdź bazę group, a następnie pozwól id wyświetlić obliczone grupy dla tego użytkownika.
getent group projekt-admin
id alice
id alice powinno wyświetlić UID, GID główny oraz oczekiwane dodatkowe grupy. Jeżeli konto wyświetla się za pomocą getent passwd alice, ale nie z id alice, zachowaj oba wyniki i sprawdź dzienniki SSSD lub odpowiedniej usługi tożsamości.
To odczytanie pomaga narzędziom, które proszą NSS o rozwiązanie tożsamości, takim jak id lub usługa skonfigurowana z katalogiem.
Przewodnik o wylistowywaniu użytkowników w systemie Linux pozostaje przydatny do inwentarzowania kont lokalnych. Tutaj pytanie jest inne: czy system rozpoznaje tożsamość w momencie, gdy usługa musi jej użyć?
Szukaj najpierw, naprawiaj potem
Trzymałbym getent jako pierwszą kontrolę przed ponownym uruchomieniem SSSD, opróżnieniem pamięci podręcznej lub zmianą nsswitch.conf. Polecenie jest tylko do odczytu i daje ten sam punkt widzenia co wiele programów Linuxa.
- Porównaj żądane konto z linią
passwd:w/etc/nsswitch.conf. - Uruchom
getent passwd użytkownikigetent group grupa. - Sprawdź obliczone grupy za pomocą
id użytkownik. - Jeżeli brakuje wejścia, zanotuj dziennik usługi tożsamości przed zmianą jej konfiguracji.
Na stanowisku tylko lokalnym getent często potwierdzi zawartość /etc/passwd. Na serwerze połączonym z katalogiem, ta różnica zapobiega usunięciu lub ponownemu utworzeniu konta, które już istnieje po stronie NSS.
Strona getent(1) na man7 szczegółowo opisuje dostępne bazy i wyszukiwanie według klucza. Jeżeli konto ma być utworzone lokalnie, użyj raczej procedury Useradd w systemie Linux po wykluczeniu zdalnej tożsamości.