Tutoriel Linux

Getent en Linux: recuperar una cuenta incluso si no proviene de /etc/passwd

Débutant3 min de lecture

Ejecutas id alice en un servidor, la cuenta existe en el directorio de la empresa, pero grep alice /etc/passwd no devuelve nada. Antes de concluir que la cuenta está ausente, mira la vista que Linux realmente utiliza.

getent interroga las bases declaradas en NSS, el mecanismo que puede combinar archivos locales, SSSD, LDAP u otro servicio de identidad. Así puedes saber si el sistema resuelve la cuenta, el grupo y su identificador numérico, sin modificar la configuración.

Tux conecta una cuenta de Linux a los archivos locales y a un directorio de red
Getent consulta las fuentes de identidad configuradas por NSS.

Por qué /etc/passwd no siempre da la respuesta

En una máquina local, /etc/passwd suele contener todas las cuentas esperadas. En un servidor conectado a LDAP o Active Directory a través de SSSD, este archivo mantiene las cuentas locales, mientras que las cuentas remotas llegan a través de NSS.

El comando getent passwd pasa por NSS para resolver la base passwd con las fuentes y el orden definidos en /etc/nsswitch.conf.

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

Una línea como passwd: files systemd sss indica que Linux primero consulta los archivos locales, luego el servicio del sistema y finalmente SSSD. No copies este orden en tu configuración: depende de la distribución y de la integración ya realizada.

Buscar una cuenta con getent

Utiliza el nombre de inicio de sesión exacto, sin mostrar toda la base. En un directorio voluminoso, getent passwd solo puede producir una salida larga e innecesaria.

getent passwd alice
getent passwd 10542

Si la cuenta se resuelve, la salida sigue el formato habitual: nombre, marcador de contraseña, UID, GID, campo descriptivo, directorio personal y shell. Por lo tanto, una cuenta de LDAP o SSSD puede aparecer aquí mientras permanece ausente de /etc/passwd.

Sin salida significa solo que NSS no encuentra esta entrada con su configuración actual. Este resultado no corrige ni una falla de LDAP, ni una caché de SSSD, ni un error en el nombre solicitado.

Verificar el grupo y la identidad efectiva

Una cuenta visible no garantiza que sus grupos sean correctos. Verifica la base group, luego deja que id muestre los grupos calculados para este usuario.

getent group proyecto-admin
id alice

id alice debe mostrar el UID, el GID principal y los grupos adicionales esperados. Si la cuenta aparece con getent passwd alice pero no con id alice, guarda ambas salidas y revisa los registros de SSSD o del servicio de identidad correspondiente.

Esta lectura ayuda a las herramientas que piden a NSS que resuelva una identidad, como id o un servicio configurado con un directorio.

La guía para listar usuarios en Linux sigue siendo útil para inventariar las cuentas locales. Aquí, la pregunta es diferente: ¿el sistema reconoce la identidad en el momento en que un servicio necesita usarla?

Buscar primero, reparar después

Yo mantendría getent como primer control antes de reiniciar SSSD, vaciar una caché o modificar nsswitch.conf. El comando es de solo lectura y proporciona el mismo punto de vista que muchos programas de Linux.

  • Compara la cuenta solicitada con la línea passwd: de /etc/nsswitch.conf.
  • Ejecuta getent passwd usuario y getent group grupo.
  • Verifica los grupos calculados con id usuario.
  • Si falta una entrada, revisa el registro del servicio de identidad antes de cambiar su configuración.

En una máquina completamente local, getent a menudo confirmará el contenido de /etc/passwd. En un servidor conectado a un directorio, esta diferencia evita eliminar o recrear una cuenta que ya existe del lado de NSS.

La página getent(1) de man7 detalla las bases disponibles y la búsqueda por clave. Si la cuenta debe ser creada localmente, utiliza la procedimiento Useradd en Linux después de haber descartado una identidad remota.

sudo apt update && sudo apt upgrade