Se /etc/nsswitch.conf
ha:
passwd: files ldap
questa riga al suo interno, e io getent passwd
scorrerò prima nel /etc/passwd
list e poi passare attraverso ogni utente in LDAP? Sembra essere quello che succede.
Lho provato su un server Red Hat e stava scorrendo migliaia di righe quando /etc/passwd
è composto da sole 36 righe.
Commenti
Risposta
getent
restituirà qualunque sia il risultato per qualsiasi “database” specificato. Determina quale backend usare quando si costruisce questo “database” in base al contenuto di /etc/nsswitch.conf
.
getent
elenca i suoi “database” quando interroghi la sua pagina di utilizzo, getent --help
.
Supported databases: ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups netgroup networks passwd protocols rpc services shadow
Per quanto ne so, non esiste wa y per disabilitare il comportamento di fornire tutti i risultati per i vari backend configurati in /etc/nsswitch.conf
.
getent
e /etc/nsswitch.conf
fanno entrambi parte di nss (Name Service Switch).
Estratto dalla pagina man di nss
Ogni chiamata a una funzione che recupera i dati da un database di sistema come la password o il database di gruppo è gestita dallimplementazione del Name Service Switch nella libreria GNU C. I vari servizi forniti sono implementati da moduli indipendenti, ognuno dei quali naturalmente varia ampiamente dallaltro.
Le implementazioni predefinite fornite con la libreria GNU C sono di default conservative e non utilizzano dati non sicuri. Ciò potrebbe essere molto costoso in alcune situazioni, soprattutto quando i database sono di grandi dimensioni. Alcuni moduli consentono allamministratore di sistema di richiedere di prendere scorciatoie se si sa che sono sicure. È quindi responsabilità dellamministratore di sistema assicurarsi che il presupposto sia corretto.
Ci sono altri moduli in cui limplementazione è cambiata nel tempo. Se unimplementazione viene utilizzata per sacrificare la velocità per il consumo di memoria, potrebbe creare problemi se il la preferenza è cambiata.
Backend
Ce ne sono una varietà, troppi per essere trattati qui. Ma è sufficiente dire che ci sono backend come sssd
(sss / LDAP), NIS e NIS + per citarne alcuni.
Quindi, a seconda di quale sistema ha specificato nel tuo /etc/nsswitch.conf
file, influenzerà loutput getent
quando viene interrogato un determinato “database”, ad esempio getent passwd
.
Riferimenti
Commenti
- Il link sssd howto è morto.
- @GhostLyrics – link modificato
risposta
Sì, se dici solo getent passwd
, verranno elencati tutti gli utenti che può trovare in uno qualsiasi dei database elencati in nsswitch.
Commenti
- solo per i provider NSS che abilitano lenumerazione. Ad esempio, con
sss
, puoi disabilitare lenumerazione per alcuni domini.
getent passwd
elencherà tutti gli utenti (local + ldap)