Cómo comprobar si una cuenta de usuario existe en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo comprobar si una cuenta de usuario existe en un sistema Linux utilizando varios métodos comunes. Exploraremos cómo consultar la existencia de un usuario con el comando id, buscar entradas de usuario dentro del archivo /etc/passwd y validar la información del usuario utilizando el comando getent passwd. Estas técnicas proporcionan diferentes formas de determinar rápidamente y eficazmente la presencia de una cuenta de usuario.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") subgraph Lab Skills linux/cat -.-> lab-558680{{"Cómo comprobar si una cuenta de usuario existe en Linux"}} linux/grep -.-> lab-558680{{"Cómo comprobar si una cuenta de usuario existe en Linux"}} linux/id -.-> lab-558680{{"Cómo comprobar si una cuenta de usuario existe en Linux"}} end

Consultar la existencia de un usuario con el comando id

En este paso, aprenderemos cómo comprobar si un usuario específico existe en el sistema utilizando el comando id. El comando id es una herramienta versátil que muestra información de usuario y grupo para el usuario actual o un usuario especificado.

Ya hemos utilizado id para ver tu propia información de usuario y grupo. Ahora, usémoslo para consultar información sobre otro usuario.

La sintaxis básica para comprobar un usuario específico es:

id [username]

Si el usuario existe, el comando mostrará su Identificador de Usuario (uid), Identificador de Grupo (gid) y los grupos a los que pertenece. Si el usuario no existe, el comando generalmente devolverá un mensaje de error que indique que el usuario es desconocido.

Intentemos comprobar la existencia de un usuario que existe, como root. Escribe el siguiente comando en tu terminal y presiona Enter:

id root

Deberías ver una salida similar a esta:

uid=0(root) gid=0(root) groups=0(root)

Esto confirma que el usuario root existe y muestra sus identificadores de usuario y grupo.

Ahora, intentemos comprobar la existencia de un usuario que probablemente no exista en este sistema, por ejemplo, un usuario llamado nonexistentuser. Escribe el siguiente comando y presiona Enter:

id nonexistentuser

Deberías ver un mensaje de error que indique que el usuario no se encuentra, como este:

id: ‘nonexistentuser’: no such user

Esto demuestra cómo se puede utilizar el comando id para determinar rápidamente si una cuenta de usuario existe en el sistema.

Recuerda, el comando id es una forma poderosa de obtener información detallada sobre usuarios y sus pertenencias a grupos.

Haz clic en Continuar para pasar al siguiente paso.

Buscar un usuario en el archivo /etc/passwd

En este paso, exploraremos otra forma de comprobar la existencia de un usuario examinando el archivo /etc/passwd. Este archivo es una parte fundamental de los sistemas Linux y contiene información sobre las cuentas de usuario.

El archivo /etc/passwd almacena detalles esenciales para cada usuario, incluyendo su nombre de usuario, Identificador de Usuario (UID), Identificador de Grupo (GID), directorio personal y shell predeterminado. Cada línea en el archivo representa una única cuenta de usuario, con campos separados por dos puntos (:).

Podemos usar el comando cat para mostrar el contenido del archivo /etc/passwd y el comando grep para buscar un nombre de usuario específico dentro de él.

Primero, veamos el contenido completo del archivo /etc/passwd. Escribe el siguiente comando en tu terminal y presiona Enter:

cat /etc/passwd

Verás una larga lista de líneas, cada una representando una cuenta de usuario. La salida se verá algo así (mostrando solo algunas líneas):

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
...

Ahora, usemos grep para buscar un usuario específico, como labex. Enviaremos la salida de cat /etc/passwd a grep labex mediante un pipe. El símbolo de pipe (|) envía la salida del comando de la izquierda como entrada al comando de la derecha.

Escribe el siguiente comando y presiona Enter:

cat /etc/passwd | grep labex

Si el usuario labex existe, verás la línea correspondiente al usuario labex del archivo /etc/passwd:

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

Si el usuario no existe, grep no encontrará una coincidencia y no habrá salida.

Intentemos buscar de nuevo el usuario nonexistentuser:

cat /etc/passwd | grep nonexistentuser

Este comando no debería producir salida, lo que indica que el usuario nonexistentuser no se encuentra en el archivo /etc/passwd.

Buscar directamente en el archivo /etc/passwd es una forma común de comprobar la existencia de un usuario, especialmente en scripts. Sin embargo, es importante tener en cuenta que este archivo solo contiene cuentas de usuario locales. Los usuarios gestionados a través de servicios de red (como LDAP) pueden no aparecer aquí.

Haz clic en Continuar para pasar al siguiente método.

Validar un usuario con el comando getent passwd

En este paso, aprenderemos sobre el comando getent, que es una forma más robusta de recuperar entradas de las bases de datos del Name Service Switch (NSS), incluyendo la base de datos de contraseñas. El comando getent es especialmente útil porque puede consultar no solo archivos locales como /etc/passwd, sino también fuentes basadas en red como LDAP o NIS.

La sintaxis básica para usar getent para consultar la base de datos de contraseñas es:

getent passwd [username]

Si el usuario existe en cualquiera de las fuentes NSS configuradas, getent mostrará la línea correspondiente de la base de datos de contraseñas, similar a lo que viste cuando usaste cat /etc/passwd. Si el usuario no existe, getent no producirá salida y terminará con un estado distinto de cero.

Usemos getent para comprobar la existencia del usuario labex. Escribe el siguiente comando en tu terminal y presiona Enter:

getent passwd labex

Deberías ver la línea correspondiente al usuario labex:

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

Ahora, usemos getent para comprobar de nuevo la existencia del usuario nonexistentuser. Escribe el siguiente comando y presiona Enter:

getent passwd nonexistentuser

Este comando no debería producir salida, al igual que cuando usamos grep en /etc/passwd. Sin embargo, getent es generalmente preferido sobre el análisis directo de /etc/passwd porque respeta la configuración NSS del sistema y puede encontrar usuarios de diversas fuentes.

Para ver la diferencia en el estado de salida, puedes comprobar el valor de $? después de ejecutar un comando. $? contiene el estado de salida del último comando ejecutado. Un valor de 0 generalmente indica éxito, mientras que un valor distinto de cero indica un error.

Ejecuta el comando getent para labex de nuevo y luego comprueba el estado de salida:

getent passwd labex
echo $?

Deberías ver la información del usuario seguida de 0.

Ahora, ejecuta el comando getent para nonexistentuser y comprueba el estado de salida:

getent passwd nonexistentuser
echo $?

No deberías ver salida de getent, seguida de un valor distinto de cero (a menudo 1 o 2).

Usar getent y comprobar su estado de salida es una forma confiable de determinar mediante programación si un usuario existe en un sistema Linux, independientemente de si el usuario está definido localmente o a través de un servicio de red.

¡Ahora has aprendido tres métodos diferentes para comprobar la existencia de un usuario en Linux!

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendimos tres métodos para comprobar si una cuenta de usuario existe en Linux. Primero, usamos el comando id, que proporciona información de usuario y grupo si el usuario existe y muestra un error si no existe. Demostramos esto comprobando la existencia del usuario root y de un usuario inexistente.

A continuación, exploramos el archivo /etc/passwd, un archivo central del sistema que contiene detalles de las cuentas de usuario. Al buscar en este archivo, podemos determinar si existe una entrada para un usuario. Finalmente, utilizamos el comando getent passwd, que es una forma más robusta de consultar información de usuario de diversas fuentes, incluyendo /etc/passwd, y generalmente se prefiere para la escritura de scripts y la automatización.