Cómo listar usuarios en la línea de comandos de Linux [3 formas sencillas]

Como administrador del sistema, a menudo necesitarás listar todos los usuarios de tu sistema Linux. Aprenda a listar todos los usuarios en la línea de comandos de Linux.
Warp Terminal

Hoy en día, diferentes sistemas operativos tienen la capacidad de utilizar múltiples usuarios, cada uno con sus ajustes y configuraciones personalizadas para facilitar el trabajo conjunto de administradores y operadores en el mismo sistema.

Linux, por otro lado, es muy fuerte en esta materia, ya que permite que varios usuarios trabajen al mismo tiempo en el sistema de forma independiente. Incluso puede permitir que un solo usuario abra varias sesiones, incluso desde diferentes lugares, para trabajar en el sistema.

Aquí hay algunos consejos y trucos para manejar usuarios en Linux.

Lista todos los usuarios en Linux

Digamos que quieres crear un usuario sudo en Linux. Probablemente, lo primero que hay que saber es cómo saber qué usuarios hay en mi sistema. Hay varias maneras de obtener la lista de usuarios en Linux.

1. Muestra los usuarios en Linux usando less /etc/passwd

Este comando permite a los sysops listar los usuarios que están almacenados localmente en el sistema. Dará el listado de forma estructurada como:

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
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
uuidd:x:106:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:107:113::/nonexistent:/usr/sbin/nologin
marcocarmonapy:x:1000:1000:,,,:/home/marcocarmonapy:/bin/bash
postgres:x:108:118:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
/etc/passwd (END)

La estructura en la salida tiene la siguiente forma:

  • Nombre de usuario
  • Contraseña encriptada (X representa que la contraseña está almacenada)
  • Número de identificación del usuario (UID)
  • Número de identificación del grupo del usuario (GID)
  • Nombre completo
  • Directorio principal del usuario
  • Shell de inicio de sesión del usuario (por defecto es el shell bash)

¿Por qué tantos usuarios? ¿Cuáles son los «reales»?

La lista muestra muchos más usuarios de los que esperabas porque también lista todos los usuarios del sistema.

Ahora bien, si quieres distinguir los usuarios normales de los del sistema, puedes consultar el número de identificador de usuario (UID).

Generalmente, un usuario normal tiene un UID mayor o igual a 1000. Esto le da una pista de que el usuario con UID >=1000 es un usuario normal y los usuarios con UID <1000 son usuarios del sistema.

También notarás que algunos de los usuarios tienen ‘nologin’ al final de su línea. Esto significa que estos usuarios no pueden iniciar sesión en el sistema. Estos usuarios también se denominan pseudo-usuarios.

2. Ve los usuarios usando getent passwd

Este comando le dará una salida similar a la de «less /etc/passwd», sin embargo, éste realmente consulta el archivo de configuración de la funcionalidad del GNU Name Service Switch (ubicado en /etc/nsswitch.conf).

Este conf incluye passwd, por lo que se mostrará de forma muy similar, pero si utiliza LDAP para la autenticación también lo incluirá.

getent passwd
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
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
uuidd:x:106:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:107:113::/nonexistent:/usr/sbin/nologin
marcocarmonapy:x:1000:1000:,,,:/home/marcocarmonapy:/bin/bash
postgres:x:108:118:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

Lista los usuarios de Linux con compgen

Si sólo quieres listar todos los nombres de usuario sin ninguna información adicional, puedes utilizar el comando compgen con la opción -u.

compgen -u

La salida sería de la siguiente forma:

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
systemd-network
systemd-resolve
messagebus
systemd-timesync
syslog
_apt
uuidd
tcpdump
marcocarmonapy
postgres
📋
Puedes utilizar el comando compgen con la opción -c para listar todos los comandos disponibles. Esto es útil cuando no eres el administrador de un sistema Linux y no tienes acceso sudo.

Algunos consejos sobre el listado de usuarios en Linux

Acabas de ver tres formas de ver los usuarios en Linux. Aquí hay algunos consejos para ayudarte con el listado de usuarios.

Listar sólo los nombres de usuario

Ya tienes el comando compgen para eso pero no tienes que recordarlo todo el tiempo.

Si quieres obtener sólo una lista de los nombres de usuario en el sistema, puedes usar el comando awk o el comando cut para filtrar la salida de los otros dos comandos que vimos antes.

cut -d: -f1 /etc/passwd

o

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

Cualquiera de ellos nos dará una lista filtrada de usuarios, mostrando sólo la primera columna que es el nombre de usuario:

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
systemd-network
systemd-resolve
messagebus
systemd-timesync
syslog
_apt
uuidd
tcpdump
marcocarmonapy
postgres

Comprobar si un nombre de usuario ya existe en el sistema

Esto puede ser útil si quiere saber si un nombre de usuario en particular ya existe en el sistema:

getent passwd | grep marcocarmonapy

Este es el resultado:

marcocarmonapy:x:1000:1000:,,,:/home/marcocarmonapy:/bin/bash

Listar todos los usuarios conectados

Si quieres saber qué usuarios están actualmente conectados a tu sistema Linux, entonces necesitas usar un simple comando who y esto listará inmediatamente los nombres de usuario actuales con una sesión activa en tu sistema

En este caso, el listado le dará no sólo la lista de nombres de usuario conectados sino también cómo están conectados, desde cuándo están conectados y desde dónde están conectados.

La primera columna le dirá de qué nombre de usuario se trata.

La segunda columna te dirá de qué tipo de conexión se trata: si está representado con un «:X» donde X es un número, significa que está utilizando una interfaz gráfica de usuario (GUI) o sesión de escritorio como Gnome, XDE, etc.; si dice «pts/X» donde X es un número, significa que es una conexión realizada a través del protocolo SSH (línea de comandos).

La tercera columna te dirá desde cuándo se ha conectado esta sesión al servidor (fecha y hora). La cuarta y última columna te dará la ubicación desde donde se ha conectado, si es remota mostrará la dirección IP desde donde se realiza la conexión si es local (como la GUI) mostrará «(:X)» donde X es el número de la sesión en este caso y coincidirá con el número de la segunda columna para esa fila.

Para terminar

Como puedes ver, listar usuarios en Linux no es difícil en absoluto. Consiste en sencillos comandos que te sacarán toda la información, lo que quieras hacer u obtener de esa información es algo que tienes que filtrar dependiendo de lo que quieras comprobar en el sistema.

Por ejemplo, si quieres listar los usuarios de un grupo en Linux, también puedes hacerlo. En un tema relacionado, también puedes leer sobre el cambio de usuarios en la línea de comandos de Linux.

Espero que te haya gustado este tutorial. Por favor, haznos saber en los comentarios si tienes alguna pregunta o sugerencia.

About the author
Marco Carmona

Marco Carmona

My name is Marco Antonio Carmona, I'm a physics and data science student, a great and passionate reader, and randomly, my favorite hobby is writing about what I learn day by day.

It's FOSS

Making You a Better Linux User

It's FOSS

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to It's FOSS.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.