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
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.