Om /etc/nsswitch.conf
har:
passwd: files ldap
den här raden i den, och jag gör getent passwd
kommer den först att springa ner /etc/passwd
lista och sedan gå igenom alla användare i LDAP? Det verkar vara vad som händer.
Jag provade det på en Red Hat-server och det rullade tusentals rader när /etc/passwd
bara är 36 rader.
Kommentarer
Svar
getent
returnerar oavsett resultatet för vilken ”databas” du anger. Den avgör vilken bakgrund som ska användas när du konstruerar denna ”databas” baserat på innehållet i /etc/nsswitch.conf
.
getent
listar sina ”databaser” när du frågar efter användningssidan, getent --help
.
Supported databases: ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups netgroup networks passwd protocols rpc services shadow
Så vitt jag vet finns det ingen wa y för att inaktivera dess beteende att tillhandahålla alla resultat för de olika backenderna som är konfigurerade i /etc/nsswitch.conf
.
getent
och /etc/nsswitch.conf
är båda en del av nss (Name Service Switch).
Utdrag från nss mansida
Varje samtal till en funktion som hämtar data från en systemdatabas som lösenord eller gruppdatabas hanteras av implementeringen av Name Service Switch i GNU C-biblioteket. De olika tjänsterna som tillhandahålls implementeras av oberoende moduler, var och en varierar naturligtvis mycket från varandra.
Standardimplementeringarna som följer med GNU C-biblioteket är som standard konservativa och använder inte osäkra data. Detta kan vara mycket kostsamt i vissa situationer, särskilt när databaserna är stora. Vissa moduler tillåter systemadministratören att begära genvägar om det är känt att dessa är säkra. Det är då systemadministratörens ansvar att se till att antagandet är korrekt.
Det finns andra moduler där implementeringen förändrades över tiden. Om en implementering används för att offra hastigheten för minneskonsumtion kan det skapa problem om preferens är bytt.
Backends
Det finns en mängd av dessa, för många för att täcka här. Men det räcker att säga är backends som sssd
(sss / LDAP), NIS och NIS + för att nämna några.
Så beroende på vilket ditt system har angett i din /etc/nsswitch.conf
-fil, kommer att påverka vilken utdata getent
visar när en viss ”databas” frågas, till exempel getent passwd
.
Referenser
Kommentarer
- Sssd-hur-länken är död.
- @GhostLyrics – ändrad länk
Svar
Ja, om du bara säger getent passwd
, kommer den att lista alla användare som de kan hitta i någon av de databaser som listas i nsswitch.
Kommentarer
- endast för NSS-leverantörer som möjliggör uppräkning. Med
sss
kan du till exempel inaktivera uppräkning för vissa domäner.
getent passwd
att visas alla användare (lokal + ldap)