Introducción
En cualquier entorno Linux, conocer quién está conectado al sistema en un momento dado es fundamental para la administración, la seguridad y el soporte técnico. El comando who es una herramienta sencilla pero poderosa que muestra información sobre los usuarios que han iniciado sesión en la máquina, ya sea de forma local o remota. En este artículo exploraremos su funcionamiento, sus opciones más útiles y ejemplos prácticos que podrás aplicar inmediatamente.
¿Qué hace exactamente el comando who?
El comando who lee el archivo /var/run/utmp (o su equivalente /var/log/wtmp en algunas distribuciones) y extrae los registros de inicio de sesión activos. Cada línea de salida representa una sesión de usuario y contiene, por defecto, los siguientes campos:
- Nombre de usuario: el login que inició la sesión.
- Terminal: el dispositivo o pseudo‑terminal asociado (por ejemplo,
tty1,pts/0). - Fecha y hora de inicio: cuándo se estableció la conexión.
- Origen (opcional): la dirección IP o el hostname desde el que se conectó, cuando está disponible.
Esta información es valiosa para detectar accesos no autorizados, gestionar sesiones abiertas o simplemente saber quién está trabajando en el servidor.
Uso básico
Ejecutar who sin argumentos muestra todas las sesiones activas:
who
Salida típica:
usuario1 tty7 2025-09-20 08:15 (:0) usuario2 pts/0 2025-09-20 09:03 (192.168.1.45) usuario3 pts/1 2025-09-20 09:12 (10.0.0.22)
Cada columna está separada por espacios o tabulaciones, lo que facilita su procesamiento con herramientas como awk o cut.
Opciones más usadas
El comando who posee varias opciones que amplían su utilidad. A continuación, las más relevantes:
-bo--boot: muestra la hora del último arranque del sistema.-Ho--heading: incluye una línea de encabezado que describe cada columna.-qo--count: solo muestra el número de usuarios conectados y sus nombres.-u: agrega información sobre el tiempo de inactividad y el PID del proceso de la shell.-ao--all: equivale a usar-b -d --login -p -r -t -T -uy muestra toda la información disponible.--help: muestra la ayuda resumida.
Por ejemplo, para ver la hora de arranque y el encabezado:
who -bH
Salida:
Nombre Línea Tiempo Comentario system boot 2025-09-20 06:45
Ejemplos prácticos
Veamos algunos escenarios donde who resulta especialmente útil.
1. Detectar sesiones remotas
Si quieres saber quién está conectado vía SSH, puedes filtrar por los pseudo‑terminales (pts/*):
who | grep 'pts/'
2. Contar usuarios activos
Para obtener rápidamente el número de usuarios conectados:
who -q
Salida:
usuario1 usuario2 usuario3 # users=3
3. Ver tiempo de inactividad
La opción -u muestra cuánto tiempo lleva cada terminal sin actividad:
who -u
Salida ejemplo:
usuario1 tty7 2025-09-20 08:15 08:15 1234 (:0) usuario2 pts/0 2025-09-20 09:03 00:10 5678 (192.168.1.45)La quinta columna indica horas:minutos de inactividad; un punto (
.) significa que la sesión está activa en este momento.4. Combinar con
watchpara monitoreo en tiempo realPara observar cambios en las conexiones cada 5 segundos:
watch -n 5 who -H
5. Obtener solo los nombres de usuario únicos
Si necesitas una lista sin duplicados:
who | awk '{print $1}' | sort -u
Consejos de administración y seguridad
El comando who es una primera línea de defensa para auditorías de acceso. Algunas buenas prácticas incluyen:
- Revisar periódicamente la salida de
who -apara detectar cuentas inactivas o procesos huérfanos. - Combinar
whoconlastpara obtener un historial de inicio y cierre de sesiones. - En scripts de monitorización, usar
who -qpara activar alertas cuando el número de usuarios supere un umbral. - Recordar que
whosolo muestra sesiones actuales; para un historial completo, consulta/var/log/wtmpconlastolastb.
Limitaciones y alternativas
Aunque who es muy útil, tiene algunas limitaciones:
- No muestra procesos en ejecución; para eso se usa
psotop. - En contenedores o entornos con nombres de usuario complejos, la salida puede resultar menos legible.
- No proporciona información sobre el consumo de recursos por sesión.
Cuando se necesitan métricas más detalladas, herramientas como w (que combina información de who y uptime) o ss para conexiones de red pueden ser complementarias.
Conclusión
El comando who es una herramienta esencial para cualquier administrador de Linux que necesite saber, de forma rápida y fiable, quién está conectado al sistema. Su sintaxis sencilla, sus opciones flexibles y la posibilidad de combinarlo con otras utilidades de la shell lo hacen ideal tanto para tareas de diagnóstico como para scripts de automatización. Dominar who te permitirá mantener un mejor control sobre el acceso a tus servidores y responder con rapidez a cualquier incidente de seguridad.


