https://esgeeks.com/?p=5872

¿Alguna vez has querido enumerar a todos los usuarios en tu sistema Linux o contar el número de usuarios en el sistema? Hay comandos para crear un usuario, eliminar un usuario, enumerar los usuarios registrados, pero ¿cuál es el comando para enumerar a todos los usuarios en Linux?

Este tutorial te mostrará cómo listar usuarios en sistemas Linux.

1. Obtener lista de todos los usuarios usando el archivo /etc/passwd

La información del usuario local se almacena en el archivo /etc/passwd. Cada línea en este archivo representa información de inicio de sesión para un usuario. Para abrir el archivo puede usar cat o less:

less /etc/passwd
Listar usuarios Linux desde etc passwd

Listar usuarios Linux desde /etc/passwd

Como puedes ver en la salida anterior, cada línea tiene siete campos delimitados por dos puntos que contienen la siguiente información:

  1. Nombre de usuario
  2. Contraseña cifrada (x significa que la contraseña está almacenada en el archivo /etc/shadow)
  3. Número de identificación de usuario (UID)
  4. Número de identificación de grupo del usuario (GID)
  5. Nombre completo del usuario (GECOS)
  6. Directorio de inicio del usuario
  7. Shell de inicio de sesión (por defecto /bin/bash)

Si deseas mostrar solo el nombre de usuario, puedes usar los comandos awk o cut para imprimir solo el primer campo que contiene el nombre de usuario:

awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
Listar username de usuarios en Linux

Listar username de usuarios en Linux

2. Obtener lista de todos los usuarios usando el comando getent

El comando getent muestra las entradas de las bases de datos configuradas en el archivo /etc/nsswitch.conf, incluida la base de datos passwd que podemos utilizar para consultar una lista de todos los usuarios.

Para obtener una lista de todos los usuarios de Linux, escribe el siguiente comando:

getent passwd
Listar usuarios Linux con comando getent

Listar usuarios Linux con comando getent

Como puedes ver, la salida es la misma que cuando se muestra el contenido del archivo /etc/passwd. Si estás utilizando LDAP para la autenticación de usuarios, getent mostrará todos los usuarios de Linux tanto desde el archivo /etc/passwd como desde la base de datos LDAP.

También puedes usar awk o cut para imprimir solo el primer campo que contiene el nombre de usuario:

getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1

3. Comprobar si un usuario existe en sistema Linux

Ahora que sabemos cómo enumerar a todos los usuarios, para verificar si un usuario existe en nuestro Linux, simplemente podemos filtrar la lista de usuarios canalizando la lista al comando grep.

getent passwd | grep <nombre_usuario>

Por ejemplo, para averiguar si un usuario con nombre alexynior existe en nuestro sistema Linux, podemos usar el siguiente comando:

getent passwd | grep alexynior

Si el usuario existe, el comando anterior imprimirá la información de inicio de sesión del usuario. Si no hay salida, eso significa que el usuario no existe.

También podemos verificar si un usuario existe sin usar el comando grep como se muestra a continuación:

getent passwd alexynior

Igual que antes, si el usuario existe, el comando mostrará la información de inicio de sesión del usuario.

  • Si deseas saber cuántas cuentas de usuarios tienes en tu sistema, canaliza la salida de getent passwd al comando wc:
getent passwd | wc -l
Saber si existe un usuario y mostrar la cantidad de usuarios existentes

Saber si existe un usuario y mostrar la cantidad de usuarios existentes

Como se puede ver en la salida anterior, mi sistema Linux tiene 56 cuentas de usuario.

4. Sistema y usuarios normales

No hay una diferencia técnica real entre el sistema y los usuarios regulares (normales). Normalmente, los usuarios del sistema se crean al instalar el sistema operativo y los nuevos paquetes. En algunos casos, puedes crear un usuario del sistema que será utilizado por alguna aplicación.

Los usuarios normales son los usuarios creados por root u otro usuario con privilegios de sudo. Por lo general, un usuario normal tiene un shell de inicio de sesión real y un directorio /home.

Cada usuario tiene un ID de usuario numérico llamado UID. Si no se especifica al crear un nuevo usuario con el comando useradd, el UID se seleccionará automáticamente del archivo /etc/login.defs en función de los valores UID_MIN y UID_MAX.

Para verificar los valores UID_MIN y UID_MAX en su sistema, puede usar el siguiente comando:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Desde la salida anterior, podemos ver que todos los usuarios normales deben tener un UID entre 1000 y 60000. Conocer el valor mínimo y máximo nos permite consultar una lista de todos los usuarios normales en nuestro sistema.

El siguiente comando mostrará una lista de todos los usuarios normales en nuestro sistema Linux:

getent passwd {1000..60000}
Verificar valores UID_MIN y UID_MAX

Verificar valores UID_MIN y UID_MAX

En tu sistema los valores UID_MIN y UID_MAX pueden ser diferentes, por lo que la versión más genérica del comando anterior sería:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}

Si deseas imprimir solo los nombres de usuario simplemente canaliza la salida al comando cut:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Listar usuarios normales en Linux

Listar usuarios normales en Linux

5. Conclusión

En este tutorial, aprendiste cómo enumerar y filtrar a los usuarios en tu sistema Linux y cuáles son las principales diferencias entre usuarios de sistema y usuarios normales de Linux.

Los mismos comandos se aplican a cualquier distribución de Linux, incluyendo Ubuntu, CentOS, RHEL, Debian y Linux Mint.

No dudes en dejar un comentario si tienes alguna pregunta o aporte. ¡Tampoco te olvides de compartir este artículo! :’)


¡Mantente actualizado!

Suscríbete a nuestro boletín semanal...

Suscríbete a nuestro boletín electrónico para recibir artículos útiles y ofertas especiales. No te perderás absolutamente de nada!

Enviaremos solamente boletines al email y no compartiremos tu email.