Se /etc/nsswitch.conf
tiver:
passwd: files ldap
esta linha nela, e eu getent passwd
executará primeiro o /etc/passwd
lista e, em seguida, percorrer todos os usuários no LDAP? Parece ser isso o que está acontecendo.
Eu tentei em um servidor Red Hat e ele estava rolando milhares de linhas quando /etc/passwd
tem apenas 36 linhas.
Comentários
Resposta
getent
retornará quaisquer que sejam os resultados para qualquer “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á wa y para desativar seu comportamento de fornecer todos os resultados para os vários back-ends configurados em /etc/nsswitch.conf
.
getent
e /etc/nsswitch.conf
fazem parte do nss (Name Service Switch).
Trecho da página do manual do nss
Cada chamada para uma função que recupera dados de um banco de dados do sistema como a senha ou banco de dados de grupo é tratada pela implementação do Name Service Switch na biblioteca GNU C. Os vários serviços fornecidos são implementados por módulos independentes, cada um dos quais naturalmente varia amplamente um do outro.
As implementações padrão que vêm com a biblioteca GNU C são conservadoras por padrão e não usam dados inseguros. Isso pode ser muito caro em algumas situações, especialmente quando os bancos de dados são grandes. Alguns módulos permitem que o administrador do sistema solicite a tomada de atalhos, caso sejam seguros. É então responsabilidade do administrador do sistema garantir que a suposição esteja correta.
Existem outros módulos onde a implementação mudou ao longo do tempo. Se uma implementação costumava sacrificar a velocidade para o consumo de memória, poderia criar problemas se o a preferência é trocada.
Back-ends
Há uma variedade desses, muitos para cobrir aqui. Mas basta dizer, lá são back-ends como sssd
(sss / LDAP), NIS e NIS +, para citar alguns.
Portanto, dependendo de qual seu sistema especificou em seu /etc/nsswitch.conf
arquivo, influenciará a saída getent
que mostra quando um determinado “banco de dados” é consultado, como getent passwd
.
Referências
Comentários
- O link howto sssd está morto.
- @GhostL Budap – link alterado
Resposta
Sim, se você apenas disser getent passwd
, ele listará todos os usuários que pode encontrar em qualquer um dos bancos de dados listados em nsswitch.
Comentários
- apenas para os provedores NSS que permitem enumeração. Por exemplo, com
sss
, você pode desativar a enumeração para alguns domínios.
getent passwd
listará todos os usuários (local + ldap)