En sistemas Linux, la gestión de usuarios es una tarea fundamental para administradores y usuarios avanzados. Cada cuenta de usuario está definida en archivos del sistema y se gestiona mediante comandos específicos. Esta guía te enseñará cómo listar, filtrar, contar y administrar usuarios en distribuciones como Ubuntu, Debian, AlmaLinux, RockyLinux, CentOS, Fedora y Arch Linux.
1. Cómo listar todos los usuarios en Linux
La información de los usuarios se encuentra en el archivo /etc/passwd
. Podemos utilizar varios comandos para extraer esta información.
1.1 Usando cat
Para listar todos los usuarios del sistema, usa:
cat /etc/passwd
Esto mostrará una salida similar a la siguiente:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
maria:x:1001:1001::/home/maria:/bin/bash
luis:x:1002:1002::/home/luis:/bin/bash
paco:x:1003:1003::/home/paco:/bin/bash
Cada línea representa un usuario con los siguientes campos separados por :
:
- Nombre de usuario
- Contraseña cifrada (almacenada en
/etc/shadow
) - UID (User ID)
- GID (Group ID)
- Información adicional
- Directorio Home
- Shell de inicio
Si solo deseas ver las primeras o últimas líneas:
head -5 /etc/passwd
tail -5 /etc/passwd
2. Cómo listar solo los nombres de usuario
Si solo necesitas una lista de nombres de usuario sin información adicional, puedes usar:
2.1 Con awk
awk -F':' '{ print $1 }' /etc/passwd
2.2 Con cut
cut -d: -f1 /etc/passwd
Salida esperada:
root
daemon
maria
luis
paco
3. Usando getent
para listar usuarios
getent
es una herramienta que consulta bases de datos de usuarios, incluyendo /etc/passwd
y otras fuentes configuradas en /etc/nsswitch.conf
.
getent passwd
Para mostrar solo los nombres:
getent passwd | cut -d: -f1
Para verificar si un usuario existe:
getent passwd maria
4. Contar el número de usuarios en Linux
Si necesitas saber cuántos usuarios están registrados en el sistema:
getent passwd | wc -l
o
cat /etc/passwd | wc -l
5. Verificar si un usuario existe
Para comprobar si un usuario está registrado:
getent passwd luis && echo "El usuario existe" || echo "No existe"
También con grep
:
cat /etc/passwd | grep '^paco:'
O usando compgen
:
compgen -u | grep maria
6. Diferenciar usuarios del sistema y usuarios normales
Los usuarios del sistema suelen tener un UID menor a 1000, mientras que los usuarios normales tienen UIDs a partir de 1000.
Para conocer el rango de UID:
grep "^UID_MIN" /etc/login.defs
grep "^UID_MAX" /etc/login.defs
Salida:
UID_MIN 1000
UID_MAX 60000
6.1 Listar solo usuarios normales
awk -F':' '{ if ($3 >= 1000) print $1 }' /etc/passwd
6.2 Listar solo usuarios del sistema
awk -F':' '{ if ($3 < 1000) print $1 }' /etc/passwd
7. Listar usuarios conectados actualmente
Para ver qué usuarios están en sesión:
who
o:
w
Ejemplo de salida:
maria pts/1 192.168.1.25 17:25 0.00s 0.01s 0.00s vim
Para un usuario específico:
w paco
Para conocer el tiempo de actividad del sistema:
uptime
Ejemplo:
11:35:26 up 71 days, 1 user, load average: 0.00, 0.00, 0.00
8. Script para listar solo usuarios normales
El siguiente script mostrará todos los usuarios con UID ≥ 1000 y que pueden iniciar sesión:
#!/bin/bash
# Listar usuarios normales (UID >= 1000)
UID_MIN=$(grep "^UID_MIN" /etc/login.defs | awk '{print $2}')
UID_MAX=$(grep "^UID_MAX" /etc/login.defs | awk '{print $2}')
awk -F':' -v min=$UID_MIN -v max=$UID_MAX '{ if ($3 >= min && $3 <= max && $7 != "/sbin/nologin") print $1 }' /etc/passwd
9. Script para listar usuarios normales y del sistema
#!/bin/bash
# Listar usuarios normales y del sistema
echo "---- Usuarios normales ----"
awk -F':' '$3 >= 1000 {print $1}' /etc/passwd
echo ""
echo "---- Usuarios del sistema ----"
awk -F':' '$3 < 1000 {print $1}' /etc/passwd
Salida de ejemplo:
---- Usuarios normales ----
maria
luis
paco
---- Usuarios del sistema ----
root
bin
daemon
adm
lp
sync
10. Identificar usuarios sin acceso al sistema
Algunas cuentas están deshabilitadas para evitar accesos no autorizados, como nobody
, daemon
o apache
. Para identificarlas:
awk -F':' '{ if ($7 == "/sbin/nologin") print $1 }' /etc/passwd
Ejemplo de salida
nobody
sshd
apache
mysql
11. Automatizar gestión de usuarios en servidores
Para sistemas con múltiples usuarios, puedes utilizar Ansible, Puppet o Bash scripts para administrar accesos y permisos de manera eficiente.
Ejemplo de creación de usuario automático:
#!/bin/bash
# Crear usuario con home y bash
useradd -m -s /bin/bash -G sudo nuevo_usuario
echo "nuevo_usuario:contraseña123" | chpasswd
Para eliminar un usuario y su directorio home:
userdel -r maria
Conclusión
Ahora conoces todas las formas de listar, filtrar, contar y gestionar usuarios en Linux. Con estos comandos puedes: ✔ Ver todos los usuarios registrados
✔ Diferenciar entre usuarios normales y del sistema
✔ Saber quién está conectado
✔ Comprobar si un usuario existe
✔ Gestionar usuarios de manera automatizada
Para más información, revisa la documentación oficial con:
man passwd
man getent
man awk
man cut
help compgen
¡Domina la gestión de usuarios en Linux y optimiza tu administración de sistemas! 🚀