Hvis /etc/nsswitch.conf
har:
passwd: files ldap
denne linjen i den, og jeg gjør getent passwd
vil den først løpe ned /etc/passwd
listen og deretter gå gjennom hver bruker i LDAP? Det ser ut til å være hva som skjer.
Jeg prøvde det på en Red Hat-server og det rullet tusenvis av linjer når /etc/passwd
bare er 36 linjer.
Kommentarer
Svar
getent
vil returnere uansett resultatene for hvilken «database» du angir. Den bestemmer hvilken bakside du skal bruke når du konstruerer denne «databasen» basert på innholdet i /etc/nsswitch.conf
.
getent
lister opp «databaser» når du spør etter brukssiden, getent --help
.
Supported databases: ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups netgroup networks passwd protocols rpc services shadow
Så vidt jeg vet er det ingen wa y for å deaktivere atferden ved å levere alle resultatene for de forskjellige backendene som er konfigurert i /etc/nsswitch.conf
.
getent
og /etc/nsswitch.conf
er begge en del av nss (Navnetjenestebryter).
Utdrag fra nss manside
Hvert anrop til en funksjon som henter data fra en systemdatabase som passordet eller gruppedatabasen håndteres av implementeringen av Name Service Switch i GNU C-biblioteket. De ulike tjenestene som tilbys er implementert av uavhengige moduler, som hver varierer naturlig fra den andre.
Standardimplementeringene som følger med GNU C-biblioteket er som standard konservative og bruker ikke usikre data. Dette kan være veldig kostbart i noen situasjoner, spesielt når databasene er store. Noen moduler lar systemadministratoren be om å ta snarveier hvis disse er kjent for å være trygge. Det er da systemadministratorens ansvar å sikre at antagelsen er riktig.
Det er andre moduler der implementeringen endret seg over tid. Hvis en implementering pleide å ofre hastighet for minneforbruk, kan det skape problemer hvis preferanse er byttet.
Backends
Det finnes en rekke av disse, for mange til å dekke her. Men nok å si, der er backends som sssd
(sss / LDAP), NIS og NIS + for å nevne noen.
Så avhengig av hvilket system du har spesifisert i /etc/nsswitch.conf
fil, vil påvirke hvilken utgang getent
viser når en gitt «database» blir spurt, for eksempel getent passwd
.
Referanser
Kommentarer
- sssd-linken er død.
- @GhostLyrics – endret lenke
Svar
Ja, hvis du bare sier getent passwd
, vil den liste opp alle brukerne den kan finne i noen av databasene som er oppført i nsswitch.
Kommentarer
- bare for NSS-leverandørene som muliggjør oppregning. For eksempel, med
sss
, kan du deaktivere oppregning for noen domener.
getent passwd
alle brukere (lokal + ldap)