Tutoriel Linux

Getent no Linux: encontrar uma conta mesmo que não venha de /etc/passwd

Débutant3 min de lecture

Você executa id alice em um servidor, a conta existe no diretório da empresa, mas grep alice /etc/passwd não retorna nada. Antes de concluir que a conta está ausente, veja a visão que o Linux está realmente usando.

getent consulta as bases declaradas no NSS, o mecanismo que pode combinar arquivos locais, SSSD, LDAP ou outro serviço de identidade. Assim, você pode saber se o sistema resolve a conta, o grupo e seu identificador numérico, sem modificar a configuração.

Tux conecta uma conta Linux aos arquivos locais e a um diretório de rede
Getent consulta as fontes de identidade configuradas pelo NSS.

Por que /etc/passwd nem sempre dá a resposta

Em uma máquina local, /etc/passwd frequentemente contém todas as contas esperadas. Em um servidor conectado ao LDAP ou Active Directory via SSSD, este arquivo mantém as contas locais, enquanto as contas remotas vêm pelo NSS.

O comando getent passwd passa pelo NSS para resolver a base passwd com as fontes e a ordem definidas em /etc/nsswitch.conf.

grep '^passwd:' /etc/nsswitch.conf
grep '^group:' /etc/nsswitch.conf

Uma linha como passwd: files systemd sss indica que o Linux consulta primeiro os arquivos locais, depois o serviço de sistema e finalmente o SSSD. Não copie essa ordem para sua configuração: ela depende da distribuição e da integração já em vigor.

Buscar uma conta com getent

Use o nome exato de login, sem mostrar toda a base. Em um diretório grande, getent passwd por si só pode produzir uma saída longa e desnecessária.

getent passwd alice
getent passwd 10542

Se a conta for resolvida, a saída segue o formato habitual: nome, marcador de senha, UID, GID, campo descritivo, diretório pessoal e shell. Uma conta LDAP ou SSSD pode aparecer aqui enquanto permanece ausente de /etc/passwd.

Sem saída significa apenas que o NSS não encontra essa entrada com sua configuração atual. Esse resultado não corrige uma falha LDAP, nem um cache SSSD, nem um erro no nome solicitado.

Verificar o grupo e a identidade efetiva

Uma conta visível não garante que seus grupos estejam corretos. Verifique a base group, depois deixe id mostrar os grupos calculados para esse usuário.

getent group projeto-admin
id alice

id alice deve mostrar o UID, o GID principal e os grupos adicionais esperados. Se a conta aparecer com getent passwd alice mas não com id alice, mantenha as duas saídas e consulte os logs do SSSD ou do serviço de identidade relevante.

Essa leitura ajuda as ferramentas que pedem ao NSS para resolver uma identidade, como id ou um serviço configurado com um diretório.

O guia para listar os usuários no Linux continua útil para inventariar as contas locais. Aqui, a questão é diferente: o sistema reconhece a identidade no momento em que um serviço precisa utilizá-la?

Buscar primeiro, corrigir depois

Eu manteria getent como o primeiro controle antes de reiniciar o SSSD, limpar um cache ou modificar nsswitch.conf. O comando é somente de leitura e dá a mesma visão que muitos programas Linux.

  • Compare a conta solicitada com a linha passwd: de /etc/nsswitch.conf.
  • Execute getent passwd usuário e getent group grupo.
  • Verifique os grupos calculados com id usuário.
  • Se uma entrada estiver faltando, colete o log do serviço de identidade antes de mudar sua configuração.

Em uma estação somente local, getent frequentemente confirmará o conteúdo de /etc/passwd. Em um servidor conectado a um diretório, essa diferença evita a exclusão ou a recriação de uma conta que já existe do lado do NSS.

A página getent(1) do man7 detalha as bases disponíveis e a busca por chave. Se a conta precisar ser criada localmente, use em vez disso o procedimento Useradd no Linux depois de descartar uma identidade remota.

sudo apt update && sudo apt upgrade