Sim, se você disser getent passwd
, ele listará todos os usuários que ele pode encontrar em qualquer um dos bancos de dados listados no nsswitch.
Se /etc/nsswitch.conf
tiver:
passwd: files ldap
esta linha, e eu faço getent passwd
primeiro percorrerá a lista /etc/passwd
e depois passará por todos os usuários no LDAP? Isso parece ser o que acontece.
Eu tentei em um servidor da Red Hat e estava rolando milhares de linhas quando /etc/passwd
tem apenas 36 linhas.
Sim, se você disser getent passwd
, ele listará todos os usuários que ele pode encontrar em qualquer um dos bancos de dados listados no nsswitch.
getent
retornará quaisquer que sejam os resultados para o "banco de dados" que você especificar. Ele determina quais backends usar ao construir esse "banco de dados" com base no conteúdo de /etc/nsswitch.conf
.
getent
lista seus "bancos de dados" quando você consulta sua página de uso, getent --help
.
Supported databases:
ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups
netgroup networks passwd protocols rpc services shadow
Até onde sei, não há como desabilitar o comportamento de fornecer todos os resultados para os vários back-ends configurados em /etc/nsswitch.conf
.
getent
e /etc/nsswitch.conf
são ambos parte do nss (Name Service Switch).
Each call to a function which retrieves data from a system database like the password or group database is handled by the Name Service Switch implementation in the GNU C library. The various services provided are implemented by independent modules, each of which naturally varies widely from the other.
The default implementations coming with the GNU C library are by default conservative and do not use unsafe data. This might be very costly in some situations, especially when the databases are large. Some modules allow the system administrator to request taking shortcuts if these are known to be safe. It is then the system administrator's responsibility to ensure the assumption is correct.
There are other modules where the implementation changed over time. If an implementation used to sacrifice speed for memory consumption it might create problems if the preference is switched.
Há uma variedade destes, muitos para cobrir aqui. Mas é suficiente dizer que existem backends como sssd
(sss / LDAP), NIS e NIS +, para citar alguns.
Então, dependendo de qual sistema especificou no seu arquivo /etc/nsswitch.conf
, irá influenciar o que a saída getent
mostra quando um dado "banco de dados" é consultado, como getent passwd
.