En resumen. Linux es un sistema multiusuario: en un servidor típico conviven docenas de cuentas, desde usuarios reales hasta servicios del sistema como sshd o nginx. Esta guía te muestra cómo listar todos los usuarios con cat, getent, compgen, awk y who, monitorear sesiones activas y auditar tu sistema de forma segura.
Saber cómo listar usuarios en Linux es conocimiento básico para cualquier administrador de sistemas, auditor de seguridad o desarrollador. Como Linux es un sistema multiusuario, varias personas y servicios pueden acceder al sistema al mismo tiempo. Tener control sobre esas cuentas garantiza que solo las personas correctas accedan a datos sensibles y recursos del sistema.
Ya sea que estés haciendo una auditoría de rutina o resolviendo problemas de permisos, saber listar usuarios con eficiencia te facilita el trabajo. Esta guía cubre desde la lectura de archivos básicos hasta filtros avanzados y scripts de automatización que funcionan en cualquier distribución de Linux.
Tipos de usuarios en Linux
Antes de ver los comandos, hay que entender los distintos tipos de cuentas que encontrarás en un sistema típico. No todos los usuarios de la lista son personas reales: la mayoría son cuentas dedicadas a procesos en segundo plano.
Usuarios regulares vs. cuentas de sistema
Linux clasifica las cuentas según su función y su UID o GID:
- Usuario root: El superusuario con UID 0. Esta cuenta puede hacer cualquier cosa sin restricciones sobre comandos o archivos.
- Cuentas de sistema: El sistema operativo las usa para ejecutar servicios específicos como
sshd,messagebusonginx. Generalmente tienen UIDs entre 1 y 999 y suelen no tener shell de inicio de sesión. - Usuarios regulares: Se crean para personas reales. En la mayoría de las distribuciones modernas, estas cuentas empiezan con UID 1000 o mayor.
Archivos de usuario: /etc/passwd y /etc/shadow
La base de datos principal de información de usuarios está en /etc/passwd. Cuando ejecutas cat /etc/passwd, ves una lista de usuarios separados por dos puntos. Cada línea tiene siete campos: nombre de usuario, marcador de contraseña (x), UID, GID, información del usuario, directorio personal y shell de inicio de sesión.
/etc/passwd es legible por todos para que el sistema pueda resolver nombres, pero las contraseñas cifradas reales están en /etc/shadow. Este archivo tiene permisos estrictos: solo el usuario root o quienes tengan privilegios sudo pueden acceder a él.
Requisitos previos
Antes de revisar los usuarios de tu sistema, confirma que tienes los niveles de acceso necesarios. Ver la lista básica de usuarios normalmente no requiere permisos especiales, pero modificar cuentas con el comando useradd o acceder al archivo /etc/shadow sí requiere sudo o acceso root. La mayoría de las herramientas que se mencionan aquí vienen preinstaladas en Debian, Ubuntu, CentOS y Fedora.
Listar todos los usuarios con cat
La forma más directa de ver todas las cuentas registradas en tu sistema es leer el archivo de contraseñas local.
Leer el archivo /etc/passwd
cat /etc/passwdEste comando vuelca toda la base de datos de usuarios en tu terminal. La salida puede ser abrumadora porque incluye todas las cuentas de servicios del sistema junto con los usuarios reales.
Filtrar usuarios con grep y less
Para buscar usuarios con más precisión, combina la salida con otras herramientas. Para buscar un nombre específico:
grep "nombre_de_usuario" /etc/passwdPara recorrer la lista de forma paginada:
cat /etc/passwd | lessListar usuarios con getent
Mientras que cat lee un archivo específico, getent es la opción más completa en sistemas modernos.
Consultar bases de datos locales y LDAP
getent passwdEste comando no solo revisa /etc/passwd: consulta la configuración de NSS (Name Service Switch), lo que significa que lista usuarios de archivos locales y de bases de datos en red como LDAP o NIS. Si tu sistema forma parte de una red corporativa, esta es la forma definitiva de listar usuarios y grupos.
Obtener detalles de un usuario específico
getent passwd nombre_de_usuarioDevuelve únicamente el registro de ese usuario, sin tener que buscar entre cientos de líneas.
Listar nombres de usuario con compgen
Si solo necesitas una lista de nombres sin UID ni directorio personal, compgen es la opción más limpia:
compgen -uGenera una lista simple de todos los nombres de usuario. Es especialmente útil en scripts donde necesitas iterar sobre usuarios sin parsear cadenas complejas.
Salida personalizada con awk y cut
A veces solo necesitas columnas específicas, como el nombre de usuario y su shell asignado.
Extraer nombres de usuario con awk
awk es ideal para archivos separados por dos puntos. Para mostrar solo el primer campo (nombre) y el tercer campo (UID):
awk -F: '{ print $1 " " $3 }' /etc/passwdEsto te ayuda a verificar permisos rápidamente e identificar a qué rangos de ID pertenece cada usuario.
Extraer nombres de usuario con cut
cut es más simple que awk. Para mostrar solo los nombres de usuario:
cut -d: -f1 /etc/passwdIdeal cuando necesitas obtener los nombres rápido y canalizarlos a otro proceso.
Verificar usuarios conectados
La lista completa te dice quién tiene acceso. Para saber quién está activo en este momento:
Los comandos who y users
whoMuestra una lista de sesiones activas, incluyendo el terminal y la hora de inicio de sesión. Si solo quieres los nombres de usuario actuales en una lista simple:
usersMonitorear la actividad con el comando w
wMuestra los usuarios conectados, lo que están haciendo (tiempos JCPU y PCPU) y su dirección IP remota si se conectaron por SSH. Es indispensable para monitorear la carga del sistema y la seguridad.
Listar usuarios por UID, grupo y shell
La gestión avanzada de usuarios requiere filtrar cuentas según sus atributos.
Listar usuarios por rango de UID
Para mostrar solo usuarios regulares (UID 1000 o mayor):
awk -F: '$3 >= 1000 {print $1}' /etc/passwdEsto te ayuda a distinguir cuentas de personas reales de cuentas de servicios del sistema.
Listar usuarios por grupo
Para ver a qué usuarios pertenece un grupo específico, revisa /etc/group o usa:
getent group nombre_del_grupoEntender los grupos y su membresía es fundamental para mantener controles de acceso bien definidos por departamento.
Encontrar usuarios con acceso sudo
Saber quién tiene poder administrativo es el primer paso de cualquier auditoría de seguridad:
getent group sudoBuenas prácticas para listar usuarios
Mantener un sistema seguro requiere auditorías regulares y seguir las mejores prácticas de gestión de usuarios.
Combinar comandos con pipes
La fortaleza de Linux está en combinar herramientas. Puedes listar todos los usuarios y contarlos al mismo tiempo:
cut -d: -f1 /etc/passwd | wc -lEsto te permite verificar si el número coincide con lo que esperas.
Usar una GUI para la gestión de usuarios
En entornos de escritorio como GNOME o KDE, puedes gestionar permisos desde «Configuración» o «Usuarios». Menos flexible que la línea de comandos, pero es una opción visual útil para quienes están comenzando.
Auditar y asegurar las cuentas
Auditar tus cuentas de sistema y el usuario root regularmente es innegociable. Asegúrate de que ningún usuario no autorizado tenga UID 0 y que las cuentas de servicios tengan su shell configurado en /sbin/nologin para prevenir accesos no autorizados.
Automatizar el listado de usuarios con scripts Bash
En entornos con muchos servidores, las revisiones manuales son ineficientes. Los scripts te permiten listar usuarios en múltiples servidores a la vez.
Escribir un script de auditoría de usuarios
Un script simple puede recorrer /etc/passwd y marcar cuentas con permisos elevados, convirtiendo el listado de usuarios en datos accionables.
Programar auditorías con cron
Al programar estos scripts con cron, automatizas la gestión de usuarios y recibes alertas cada vez que se crea una cuenta nueva con el comando useradd.
Preguntas frecuentes
Puedes usar getent passwd o cat /etc/passwd para listar todos los usuarios del sistema.
Usa el comando who o w para ver los usuarios activos y lo que están haciendo.
El comando getent group muestra todos los grupos del sistema con sus miembros.
El comando más común para obtener una lista simple de nombres es cut -d: -f1 /etc/passwd.
Ejecuta id nombre_de_usuario o getent passwd nombre_de_usuario.
Usa getent passwd o cat /etc/passwd para mostrar la base de datos completa de usuarios.
La seguridad de usuarios en Linux implica controlar el acceso mediante permisos correctos, auditorías regulares y garantizar que solo las cuentas autorizadas tengan privilegios elevados.