Usuarios y grupos (RSA-09)
Aquí aprenderás cómo crear, modificar y gestionar usuarios en el sistema, definir grupos, asignar permisos y mantener el control sobre quién puede hacer qué.
Comando: useradd
Sintaxis Básica
Crea un nuevo usuario en el sistema.
Ejemplos:
# useradd juan
# useradd -m luisgulo # Crea carpeta personal
Sintaxis Avanzada
Permite definir shell, grupos, carpeta personalizada o UID específico.
Ejemplos:
# useradd -m -s /bin/bash -G sudo luisgulo
# useradd -d /srv/usuarios/julio julio
# useradd -u 1501 pedro
Comando: passwd
Sintaxis Básica
Asigna o cambia la contraseña de un usuario.
Ejemplos:
# passwd luisgulo
Sintaxis Avanzada
Puede usarse para bloquear usuarios o forzar cambio en el próximo inicio de sesión.
Ejemplos:
# passwd -l luisgulo # Bloquear usuario
# passwd -e juan # Expira la contraseña (forzar cambio)
Comando: usermod
Sintaxis Básica
Modifica propiedades de un usuario existente.
Ejemplos:
# usermod -aG audio luisgulo # Añadir usuario a grupo
# usermod -s /bin/zsh luisgulo # Cambiar shell
Sintaxis Avanzada
Permite mover carpeta personal, cambiar UID o redefinir grupo principal.
Ejemplos:
# usermod -d /mnt/perfiles/luisgulo -m luisgulo
# usermod -u 2001 luisgulo
# usermod -g admin luisgulo
Comando: groupadd / groupmod / groupdel
Sintaxis Básica
Gestiona grupos de usuarios.
Ejemplos:
# groupadd desarrolladores
# groupmod -n devs desarrolladores # Cambia nombre de grupo
# groupdel testers
Sintaxis Avanzada
Puede usarse con GID específico o gestionar múltiples grupos.
Ejemplos:
# groupadd -g 1050 auditores
# usermod -G sudo,auditores luisgulo
Comando: id / groups / whoami
Sintaxis Básica
Consulta la información de grupos y usuario actual.
Ejemplos:
$ id
$ groups luisgulo
$ whoami
Sintaxis Avanzada
Puede usarse en scripts para verificar permisos o filtrar por UID.
Ejemplos:
$ id -u
$ id -Gn | grep admins
Comando: deluser / userdel
Sintaxis Básica
Elimina usuarios del sistema.
Ejemplos:
# userdel juan
Sintaxis Avanzada
Permite eliminar carpeta personal y asociaciones con grupos.
Ejemplos:
# userdel -r pedro # Elimina usuario y su home
# deluser luisgulo sudo # Elimina usuario de un grupo
Comando: chage
Controla la vigencia de contraseñas y políticas de caducidad para cada usuario.
Sintaxis Básica
Muestra la información de caducidad actual:
# chage -l luisgulo
Sintaxis Avanzada
Permite forzar cambios, establecer fechas de expiración o modificar ciclos de cambio obligatorio:
# chage -E 2025-12-31 luisgulo # Expira la cuenta en esa fecha
# chage -M 90 luisgulo # Máximo de 90 días antes de cambiar contraseña
# chage -d 0 luisgulo # Forzar cambio al próximo inicio de sesión
Comando: loginctl
Permite consultar sesiones activas de usuarios en sistemas con systemd
.
Sintaxis Básica
Ver qué sesiones están activas en el sistema:
$ loginctl list-users
$ loginctl list-sessions
Sintaxis Avanzada
Puedes inspeccionar detalles de una sesión, controlar permisos y habilitar servicios persistentes:
$ loginctl show-user luisgulo
$ loginctl session-status <ID>
# loginctl enable-linger luisgulo # Permite que los servicios del usuario se ejecuten sin iniciar sesión gráfica
Comando: faillog
Muestra y gestiona bloqueos por múltiples intentos fallidos de inicio de sesión.
Sintaxis Básica
Consulta registros por usuario:
# faillog -u luisgulo
# faillog -a # Muestra todos los usuarios
Sintaxis Avanzada
Puedes bloquear cuentas después de intentos fallidos o eliminar registros:
# faillog -m 3 -t 900 -u luisgulo # Bloquea después de 3 intentos fallidos en 15 min
# faillog -r -u luisgulo # Reinicia el contador de intentos
Importante: algunas configuraciones requieren quepam_tally
opam_faillock
estén habilitados en tu archivo de PAM.
Vamos a ver dos temas adicionales:
- Cómo combinar
faillog
con políticas del archivologin.defs
- Cómo funcionan los archivos de configuración PAM y qué papel cumplen en el sistema
Integrar faillog
con políticas del sistema: login.defs
El archivo /etc/login.defs
define parámetros globales relacionados con el comportamiento de usuarios, contraseñas y sesiones.
Ejemplos relevantes:
FAILLOG_ENAB yes # Habilita registro de intentos fallidos
FAIL_MAX 3 # Número máximo de intentos antes de bloquear
FAIL_MIN 600 # Tiempo mínimo entre bloqueos (en segundos)
LOGIN_RETRIES 5 # Intentos permitidos antes de desconexión automática
LOGIN_TIMEOUT 60 # Tiempo para ingresar credenciales antes de cancelar login
PASS_MAX_DAYS 90 # Vida útil máxima de una contraseña
PASS_MIN_DAYS 0 # Días mínimos antes de permitir cambio
PASS_WARN_AGE 7 # Aviso de caducidad con anticipación
¿Cómo funciona junto a faillog
?
Cuando estas políticas están activadas, el sistema registra intentos erróneos en /var/log/faillog
. Puedes gestionarlos con:
# faillog -u luisgulo
# faillog -r -u luisgulo # Reinicia el contador de fallos
# faillog -m 3 -t 900 -u luisgulo # 3 fallos → bloqueo durante 15 minutos
El sistema se apoya en estas configuraciones, siempre que estén acompañadas por módulos PAM que gestionen los accesos correctamente.
Entender PAM de forma sencilla
PAM significa Pluggable Authentication Modules. Es el sistema que regula cómo se autentican los usuarios en Linux. Se compone de múltiples archivos en /etc/pam.d/
y cada programa (login, sudo, ssh…) tiene su propio archivo de configuración.
¿Cómo funciona PAM?
Cada archivo PAM contiene módulos organizados por tipo. Los tipos más comunes son:
Tipo | Función |
---|---|
auth | Autenticación del usuario (contraseña, huella, etc.) |
account | Verifica si el usuario puede acceder según restricciones |
password | Regula el cambio de contraseña |
session | Ejecuta acciones al iniciar/cerrar sesión |
Cada línea en estos archivos sigue este formato:
tipo control módulo [opciones]
Ejemplo básico en /etc/pam.d/login
:
auth required pam_unix.so
auth optional pam_faildelay.so delay=400000
account required pam_unix.so
session required pam_lastlog.so
pam_unix.so
: autentica con el sistema local (usuarios y contraseñas)pam_faildelay.so
: aplica retraso ante fallos (protege de fuerza bruta)pam_lastlog.so
: muestra última conexión al usuario
Integración con bloqueos (faillog / pam_tally2 / pam_faillock)
Para que los bloqueos por intentos fallidos funcionen, debes tener módulos como:
auth required pam_faillock.so preauth
auth [success=1 default=bad] pam_unix.so
auth required pam_faillock.so authfail
También puedes usar pam_tally2
:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=900
Estos módulos pueden bloquear el acceso tras varios intentos erróneos y desbloquear automáticamente tras cierto tiempo.
Recomendaciones generales:
- Usa
login.defs
para definir políticas globales de seguridad. - Complementa con
faillog
y módulos PAM si quieres endurecer el sistema. - Verifica que los archivos en
/etc/pam.d/
estén configurados con sentido y no contradigan tus políticas. - Siempre prueba los cambios con sesiones alternativas antes de cerrar la principal (para evitar bloqueos).
Autenticación mediante lector de huellas dactilares
En sistemas Linux modernos, se puede configurar un lector de huellas digitales para iniciar sesión, ejecutar comandos con sudo
, desbloquear la pantalla o iniciar sesión gráfica (GDM, LightDM, etc.). Esta autenticación biométrica puede convivir con métodos tradicionales de contraseña.
1. Requisitos previos
Hardware compatible
- Lector USB o embebido reconocido por el kernel
Verifica con:
$ lsusb | grep -i fingerprint
Software necesario
- Paquete principal:
fprintd
(daemon para huellas) - Backend:
libpam-fprintd
(para integración con PAM) - Herramientas:
fprintd-enroll
,fprintd-verify
En sistemas Debian/Ubuntu:
# apt install fprintd libpam-fprintd
2. Registrar huella digital
Cada usuario debe registrar su propia huella:
$ fprintd-enroll
→ El sistema pedirá repetir el gesto de lectura varias veces.
Para verificarla manualmente:
$ fprintd-verify
3. Integración en consola (sudo, login, su)
Edita el archivo PAM correspondiente para incluir el módulo de huellas, pero conservando como método alternativo la contraseña.
Ejemplo en /etc/pam.d/sudo
:
auth sufficient pam_fprintd.so
auth required pam_unix.so
sufficient
: si la huella es válida, permite accesorequired
: si la huella falla, solicita contraseña
Este orden garantiza que si no hay lector o falla la lectura, se ofrece el método clásico sin bloquear al usuario.
También puedes configurar en:
/etc/pam.d/login
→ para consola/etc/pam.d/su
→ para cambios de usuario
4. Integración en entorno gráfico
Los principales gestores de sesión como GDM (GNOME), SDDM (KDE) y LightDM pueden usar PAM para autenticación biométrica.
Ejemplo para GDM:
Edita /etc/pam.d/gdm-password
:
auth sufficient pam_fprintd.so
auth required pam_unix.so
Esto permitirá desbloquear la sesión con huella digital, pero solicitará contraseña si hay error o no se detecta el lector.
5. Comportamiento ante errores
Si el lector falla (huella mal colocada, lector desconectado, etc.), el módulo pam_fprintd.so
puede configurarse para registrar fallos, aplicar retrasos o mostrar mensajes. El sistema seguirá con pam_unix.so
como respaldo, garantizando acceso por contraseña tradicional.
Algunas opciones avanzadas:
auth sufficient pam_fprintd.so timeout=10 retry=3
timeout
: segundos máximos para lecturaretry
: número de intentos de huella antes de pasar a contraseña
6. Desbloqueo de pantalla
En sistemas que usan gnome-screensaver
o gdm
, la huella también puede desbloquear sesiones suspendidas si se configura correctamente en PAM.
Recomendaciones
- Registra la huella desde el mismo usuario que la utilizará.
- Asegúrate de tener acceso por contraseña en todo momento.
- No dependas exclusivamente de la huella en sistemas remotos (no suelen transmitir datos biométricos).
- Verifica la compatibilidad del lector (algunos modelos propietarios requieren drivers específicos).
Veamos una configuración sencilla y segura de PAM que habilita autenticación mediante huella digital con fallback a contraseña tradicional en tres contextos clave: consola (login
), comandos privilegiados (sudo
) y entorno gráfico (gdm-password
).
El objetivo es que si la huella falla, el sistema permita seguir autenticando con la contraseña sin bloquear al usuario.
Configuración PAM para autenticación biométrica con respaldo por contraseña
Los siguientes ejemplos deben aplicarse cuidadosamente, siempre realizando pruebas en sesiones separadas o TTY paralelas. Se recomienda conservar métodos clásicos en todos los casos.
1. /etc/pam.d/login
Aplicación: inicio de sesión por consola (tty o login directo)
auth sufficient pam_fprintd.so
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
session optional pam_lastlog.so
pam_fprintd.so
: permite autenticación por huella.- Si falla la lectura o no se detecta lector,
pam_unix.so
solicita contraseña. pam_lastlog.so
: muestra la última conexión.
2. /etc/pam.d/sudo
Aplicación: ejecución de comandos privilegiados con sudo
auth sufficient pam_fprintd.so
auth required pam_unix.so
account required pam_unix.so
- El usuario podrá autenticar mediante huella en sudo, y si no es posible, se solicita contraseña de forma tradicional.
3. /etc/pam.d/gdm-password
Aplicación: inicio de sesión en entorno gráfico (GNOME Display Manager)
auth sufficient pam_fprintd.so
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
session optional pam_systemd.so
- Garantiza que el inicio gráfico se pueda hacer con huella.
- Si no es posible por error, el entorno ofrece entrada de contraseña.
pam_systemd.so
: inicia correctamente el entorno gráfico vinculado al usuario.
Recomendaciones generales
- Siempre prueba los cambios desde otra sesión (por ejemplo TTY2 con
Ctrl+Alt+F2
) antes de cerrar tu sesión principal. - Si tu sistema usa
sudoers
por grupos (ej.wheel
osudo
), asegúrate de que los usuarios biométricos pertenezcan a ellos. - Verifica que el lector esté activo y visible en
lsusb
ofprintd-list
.
Siempre pueden producirse imprevistos, con lo que debemos de disponer de un copia de seguridad de las configuraciones PAM antes de aplicar modificaciones.
Es fundamental tener esta copia por si ocurre algún error en autenticación (lo que podría bloquear el acceso al sistema).
Plantilla para respaldo y restauración de archivos PAM
Antes de modificar cualquier archivo en /etc/pam.d/
, realiza una copia de seguridad como superusuario.
Crear respaldos
# cd /etc/pam.d/
# cp login login.bak
# cp sudo sudo.bak
# cp gdm-password gdm-password.bak
Puedes guardar estas copias en una ruta segura como /etc/pam-backup/
o tu carpeta de administrador.
Restaurar archivos PAM en caso de fallo
Si pierdes acceso por consola gráfica o por TTY, puedes recuperar la configuración desde una sesión root o desde un entorno de rescate:
# cp login.bak login
# cp sudo.bak sudo
# cp gdm-password.bak gdm-password
Comprobación rápida tras restaurar
# pam-auth-update --force
# systemctl restart gdm # En sistemas con GNOME
Recomendaciones
- Haz los cambios en sesiones paralelas (ejemplo: TTY2 con
Ctrl+Alt+F2
) - Verifica después de cada edición que puedas iniciar sesión normalmente
- Mantén una cuenta alternativa con contraseña local (sin biometría)
- Evita usar editores como
nano
ovim
en remoto sin conexión persistente
Esto te asegura que cualquier error en el módulo biométrico (huella mal configurada, lector dañado, etc.) no impida tu acceso al sistema.