¿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.
- SI LLEGASTE HASTA AQUÍ, ESTO ES PARA TI: Comandos Básicos y Esenciales de Linux/Unix
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
Como puedes ver en la salida anterior, cada línea tiene siete campos delimitados por dos puntos que contienen la siguiente información:
- Nombre de usuario
- Contraseña cifrada (
x
significa que la contraseña está almacenada en el archivo/etc/shadow
) - Número de identificación de usuario (UID)
- Número de identificación de grupo del usuario (GID)
- Nombre completo del usuario (GECOS)
- Directorio de inicio del usuario
- 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
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
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 comandowc
:
getent passwd | wc -l
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}
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
- ARTÍCULO RELACIONADO: Tres métodos para crear una cuenta de usuario 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! :’)