Cómo listar y gestionar usuarios en Linux: Guía completa

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

  1. Nombre de usuario
  2. Contraseña cifrada (almacenada en /etc/shadow)
  3. UID (User ID)
  4. GID (Group ID)
  5. Información adicional
  6. Directorio Home
  7. 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! 🚀

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio