Hoy en día, diferentes sistemas operativos tienen la capacidad de usar múltiples usuarios, cada uno con sus configuraciones y configuraciones personalizadas para facilitar que los administradores y operadores trabajen juntos en el mismo sistema.
Linux, por otro lado, es muy fuerte en este asunto, 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 ubicaciones para trabajar en el sistema.
Aquí hay algunos consejos y trucos para manejar usuarios en Linux.
Lista de todos los usuarios en Linux
Digamos que desea crear un usuario sudo en Linux. Probablemente, lo primero que deba saber es cómo saber qué usuarios hay en mi sistema. Hay varias formas de obtener la lista de usuarios en Linux.
1. Mostrar usuarios en Linux usando menos /etc/passwd
Este comando permite a los operadores del sistema enumerar 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
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin
/etc/passwd (END)
La estructura en el resultado anterior es como:
- Nombre de usuario
- Contraseña encriptada (
x
representa que la contraseña está almacenada) - Número de ID de usuario (UID)
- Número de ID de grupo del usuario (GID)
- Nombre completo
- Directorio de inicio del usuario
- Shell de inicio de sesión del usuario (el predeterminado es shell bash)
¿Por que tantos usuarios? ¿Cuáles son 'reales'?
La lista muestra muchos más usuarios de los que esperaba porque también incluye todos los usuarios del sistema.
Ahora, si desea distinguir a los usuarios normales de los usuarios del sistema, puede 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á 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 pseudousuarios.
2. Ver usuarios usando getent passwd
Este comando le dará un resultado similar a "less /etc/passwd", sin embargo, este en realidad consulta el archivo de configuración de la funcionalidad del cambio de servicio de nombres GNU (ubicado en /etc/nsswitch.conf).
Esta configuración incluye contraseña, por eso se mostrará de manera muy similar, pero si usa LDAP para la autenticación, también lo incluirá.
3. Lista de usuarios de Linux con compgen
Si solo desea enumerar todos los nombres de usuario sin ninguna información adicional, puede usar el comando compgen con -u opción.
compgen -u
La salida sería así:
compgen -u
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
systemd-network
systemd-resolve
syslog
messagebus
_apt
uuidd
avahi-autoipd
usbmux
dnsmasq
rtkit
cups-pk-helper
speech-dispatcher
whoopsie
kernoops
saned
pulse
avahi
colord
hplip
geoclue
gnome-initial-setup
gdm
abhishek
Sugerencia:puede usar el comando compgen con la opción -c para obtener una lista de todos los comandos disponibles. Esto es útil cuando no es el administrador de un sistema Linux y no tiene acceso a sudo.
Algunos consejos sobre cómo listar usuarios en Linux
Acabas de ver tres formas de ver usuarios en Linux. Estos son algunos consejos que le ayudarán a gestionar la lista de usuarios.
Listar solo los nombres de usuario
Ya tiene el comando compgen para eso, pero no tiene que recordarlo todo el tiempo.
Si solo deseamos obtener una lista de los nombres de usuario en el sistema, puede usar el comando awk o el comando cut para filtrar la salida de los otros dos comandos que vimos anteriormente.
cut -d: -f1 /etc/passwd
o
getent passwd | awk -F: '{ print $1}'
Cualquiera de estos nos dará una lista filtrada de usuarios, mostrando solo la primera columna que es nombre de usuario:
root
daemon
bin
sys
sync
games
man
lp
mail
news
johndoe
davmail
statd
Verificar si ya existe un nombre de usuario en el sistema
Esto puede ser útil si desea saber si un nombre de usuario en particular ya existe en el sistema:
getent passwd | grep johndoe
Esta es la salida:
johndoe:x:1000:1000:John Doe,,,:/home/johndoe:/bin/bash
Lista de todos los usuarios conectados
Si desea saber qué usuarios están conectados actualmente a su sistema Linux, entonces necesita usar un simple comando who y esto listará inmediatamente los nombres de usuario actuales con una sesión activa en su sistema
[email protected]:~$ who
johndoe :0 2019-01-28 21:35 (:0)
harrysmith pts/0 2019-02-01 09:51 (192.168.1.1)
stevejones pts/1 2019-02-02 09:51 (192.168.1.173)
En este caso, la lista le dará no solo 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á qué nombre de usuario es.
La segunda columna le indicará qué tipo de conexión es:si se representa con una ":X", donde X es un número, significa que está utilizando una interfaz gráfica de usuario (GUI) o una 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 comando).
La tercera columna le indicará desde cuándo se ha conectado esta sesión al servidor (fecha y hora). La cuarta y última columna le dará la ubicación desde donde está conectado, si es remoto, mostrará la 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 de esa fila.
Conclusión
Como puede ver, enumerar usuarios en Linux no es nada difícil. Consiste en comandos simples que generarán toda la información por usted, cualquier cosa que desee hacer u obtener de esa información es algo que debe filtrar según lo que desee verificar en el sistema.
Por ejemplo, si desea enumerar usuarios en un grupo en Linux, también puede hacerlo. En un tema relacionado, también puede leer sobre el cambio de usuarios en la línea de comandos de Linux.
Espero que les haya gustado este tutorial. Si tiene alguna pregunta o sugerencia, háganoslo saber en los comentarios.