Linux / Comando getent: consultar usuários, grupos e hosts pelo NSS
getent consulta registros de usuários, grupos e hosts por meio do Name Service Switch (NSS), o mecanismo que seleciona fontes de informações de nomes no sistema. Assim, pode encontrar contas oferecidas por fontes configuradas além dos arquivos locais. Encontrar um registro não comprova que uma senha será aceita nem que um serviço de rede está acessível.
Sintaxe e requisitos
getent [opções] base [chave...]
Informe primeiro a base, como passwd, group ou hosts, e depois a chave desejada. A sintaxe acima é descritiva; não digite os colchetes. Em Linux com a implementação da GNU C Library, chamada glibc, confira getent --version, getent --help e man getent. Outras implementações podem ter diferenças.
As fontes e a ordem de consulta são configuradas em /etc/nsswitch.conf. O manual de nsswitch.conf explica que as ações associadas aos resultados também afetam a continuidade da busca. Ler apenas /etc/passwd não reproduz necessariamente essa consulta.
Consultar uma conta
Para procurar a conta chamada alice:
getent passwd alice
Alice é um nome ilustrativo e precisa existir numa fonte disponível para que haja um registro. O argumento passwd seleciona a base de contas; ele não executa o comando passwd nem altera uma senha. Na implementação glibc, uma chave numérica nessa base é consultada como identificador de usuário, ou UID; uma chave não numérica é consultada como nome.
Comece por uma chave conhecida no sistema. Uma consulta sem resultado pede verificação do nome, do status e da fonte configurada; ela não autoriza concluir imediatamente que a conta inexiste em todos os diretórios externos.
Consultar um grupo
Para procurar o grupo editors:
getent group editors
A linha de grupo tem os campos nome, campo de senha, identificador numérico de grupo (GID) e lista de membros, separados por dois-pontos. Na lista final, os nomes são separados por vírgulas, conforme o formato documentado de group. Uma chave numérica da consulta group é tratada como GID.
Não use apenas a lista final para concluir todos os vínculos de uma conta: o grupo primário também é indicado pelo GID no registro passwd. Para consultar os grupos de uma conta ou do processo atual, veja o guia de id. Uma sessão já aberta e uma consulta atual à base não representam necessariamente o mesmo estado de grupos.
Consultar um nome de host
O exemplo usa localhost, sem alterar a configuração:
getent hosts localhost
A resposta segue as fontes de hosts configuradas para a consulta. Pode vir de um arquivo local ou de outro serviço de nomes, e pode apresentar endereços IPv4 ou IPv6 conforme o ambiente. Não imponha um endereço único como saída universal desse exemplo.
A consulta hosts não é exclusivamente um teste de DNS, o Sistema de Nomes de Domínio. Tampouco testa uma porta de rede ou a resposta de uma aplicação. O manual de getent distingue hosts de ahosts: getent ahosts localhost usa getaddrinfo e pode ser útil ao comparar uma aplicação que utiliza essa interface. Compare a mesma API e o mesmo contexto antes de atribuir uma diferença ao servidor de nomes.
Interpretar um registro passwd
Para consultar root:
getent passwd root
Exemplo ilustrativo de uma linha; o diretório inicial e o shell podem variar:
root:x:0:0:root:/root:/bin/bash
Os sete campos são nome de login, campo de senha, UID, GID primário, informação descritiva, diretório inicial e shell de login. Nesse exemplo, os dois zeros são UID e GID, /root é o diretório inicial e /bin/bash é o shell. O segundo campo x não contém a senha em texto: em sistemas que usam senhas shadow, indica a separação para a base correspondente. Consulte o formato de passwd para os campos.
Essa linha descreve uma conta; não demonstra que ela pode entrar por SSH, que uma senha está válida ou que uma política de autenticação permite o acesso. O exercício não exige consultar shadow nem obter privilégios administrativos para expor dados de senha.
A verificação disponível usou Bash 5.3.9 do Git para Windows: os quatro blocos de consulta passaram pela análise de sintaxe, mas getent não estava instalado e as tentativas retornaram 127. A linha de root acima é ilustrativa, não uma resposta observada nessa verificação. O resultado de NSS deve ser conferido num Linux com a ferramenta e as fontes relevantes disponíveis.
Bases e seleção de serviço na glibc
| Base ou opção | Uso |
|---|---|
passwd |
Consulta registros de contas por nome ou UID. |
group |
Consulta grupos por nome ou GID. |
hosts |
Consulta registros de nomes ou endereços de hosts. |
-s serviço |
Substitui, nessa execução, o serviço de consulta para todas as bases. |
-s base:serviço |
Substitui, nessa execução, o serviço apenas da base especificada. |
Por exemplo, getent -s files passwd root seleciona a fonte files para a consulta de root, se houver suporte. Isso ajuda a comparar uma fonte específica com a consulta normal; não edita nsswitch.conf. A fonte files não representa todo o conjunto de contas que outra fonte, como um diretório LDAP, pode fornecer. LDAP significa Lightweight Directory Access Protocol e é um protocolo usado por serviços de diretório.
Verificar falhas e limites da consulta
Consulte echo "$?" imediatamente após getent, antes de outro comando substituir o status. No getent da glibc, 0 indica sucesso; 1 indica argumento ausente ou base desconhecida; 2 indica que uma ou mais chaves não foram encontradas; 3 indica que a base não oferece enumeração. O status 127 citado no teste em Windows veio do shell por ausência do programa, não dessa tabela de retornos de getent.
Sem chave, getent tenta enumerar a base. Nem toda base oferece essa operação, e uma consulta ampla pode produzir saída grande. Para diagnosticar uma conta específica, prefira uma chave: a ausência numa listagem geral não substitui uma consulta direta quando a fonte não oferece enumeração completa.
Se a consulta falhar, confirme a base e a chave, leia o diagnóstico e compare uma chave conhecida na mesma base. Examine a linha correspondente de nsswitch.conf e a disponibilidade da fonte conforme as ferramentas documentadas para ela. O retorno 2, sozinho, não distingue definitivamente um nome ausente de uma falha na fonte que impediu encontrá-lo; mudar arquivos de configuração por tentativa pode esconder a causa.
Pergunta frequente
Qual é a diferença entre getent passwd alice e grep alice /etc/passwd?
Getent consulta a chave na base usando o caminho NSS configurado. Grep procura texto apenas no arquivo local e, nesse exemplo, pode casar alice como parte de outra palavra ou de outro campo. A busca textual não equivale à consulta exata de uma conta, especialmente quando há fontes externas.
Documentação
O manual de getent detalha as bases, as opções de serviço e os códigos de saída. Confira também o manual instalado na distribuição em que executará as consultas.




