Gestión de usuarios en servidores Linux

Este módulo explica cómo gestionar usuarios y grupos en servidores Linux desde el punto de vista administrativo, no como uso personal del sistema.

Aprenderás a controlar accesos, diferenciar tipos de cuentas, usar grupos correctamente y aplicar buenas prácticas para entornos de producción. Una mala gestión de usuarios es una de las causas más frecuentes de incidentes de seguridad y errores operativos.


Introducción

Linux es un sistema multiusuario por diseño.
En un servidor, cada proceso, cada acceso y cada acción ocurre bajo una identidad.

Gestionar usuarios en servidores no va de “crear cuentas”, sino de:

  • Controlar quién puede acceder
  • Definir qué puede hacer cada uno
  • Reducir superficie de ataque
  • Mantener trazabilidad de acciones

En producción, cada usuario es un vector de riesgo si no está bien gestionado.


Tipos de usuarios en un servidor

En un servidor Linux existen distintos tipos de usuarios, y no deben tratarse igual.

Usuarios humanos

Son cuentas usadas por personas reales.

Características:

  • Acceso interactivo
  • Shell asignada
  • Uso limitado
  • Normalmente vía SSH

Ejemplo:

id admin

Uso típico:

  • Administración
  • Mantenimiento
  • Soporte

Usuarios de sistema (usuarios técnicos)

Usados por servicios y demonios.

Características:

  • No interactivos
  • Sin login real
  • Ejecutan procesos
  • UID bajo

Ejemplos comunes:

www-data
mysql
redis
sshd
id www-data

⚠️ Nunca uses usuarios de sistema para login humano.


Usuario root

  • UID 0
  • Control total del sistema
  • Puede ignorar permisos
id root

❗ root no debe usarse para trabajo diario.


Grupos como herramienta administrativa

Los grupos son la base de una buena gestión de accesos.

Un grupo permite:

  • Asignar permisos a varios usuarios
  • Gestionar accesos de forma centralizada
  • Evitar configuraciones individuales

Ejemplo:

groupadd admins
usermod -aG admins admin

Ver grupos de un usuario:

groups admin

💡 En servidores, los permisos se dan a grupos, no a usuarios individuales.


sudo: acceso controlado a privilegios

En servidores modernos, sudo es obligatorio.

Permite:

  • Ejecutar comandos como root
  • Mantener trazabilidad
  • Limitar privilegios

Ejemplo:

sudo systemctl restart nginx

Archivo clave:

/etc/sudoers

Editar siempre con:

visudo

⚠️ Nunca edites sudoers con editores normales.


Alta y baja de usuarios en servidores

Crear usuario correctamente

Forma recomendada:

adduser admin

O explícita:

useradd -m -s /bin/bash admin
passwd admin

Añadir a grupos

usermod -aG sudo admin

❗ Sin -a, sobrescribes grupos existentes.


Eliminar usuarios

userdel admin

Eliminar también su home:

userdel -r admin

⚠️ Antes de borrar, revisa procesos y datos asociados.


Control de acceso SSH

En servidores, SSH es la puerta principal.

Buenas prácticas:

  • Deshabilitar login directo de root
  • Usar claves SSH
  • Limitar usuarios permitidos

Archivo clave:

/etc/ssh/sshd_config

Opciones típicas:

PermitRootLogin no
AllowUsers admin soporte

Aplicar cambios:

systemctl restart ssh

Gestión del ciclo de vida del usuario

Un sysadmin debe gestionar todo el ciclo de vida:

  • Alta
  • Modificación
  • Revocación
  • Eliminación

Situaciones críticas:

  • Usuario que deja la empresa
  • Cuenta temporal olvidada
  • Claves no rotadas
  • Accesos innecesarios

💡 Un usuario que ya no debería existir es un riesgo.


Archivos clave del sistema

Usuarios y grupos se definen en archivos de texto:

/etc/passwd
/etc/shadow
/etc/group

Nunca editarlos a mano salvo casos muy concretos y con cuidado.


Puntos críticos / Errores comunes

Errores habituales en servidores:

  • Usar root para todo
  • Compartir cuentas
  • Dar sudo sin criterio
  • No eliminar usuarios antiguos
  • Olvidar -a en usermod
  • Permitir SSH a usuarios innecesarios

Consejo: menos usuarios = menos problemas.


Ejercicios prácticos

  1. Crear un usuario administrativo
adduser admin-test
usermod -aG sudo admin-test
groups admin-test

  1. Revisar accesos actuales
cat /etc/passwd | tail
groups

  1. Revisar configuración SSH
sshd -T | grep permitrootlogin

Mentalidad

Un sysadmin debe pensar así:

  • Cada usuario es un posible problema
  • Los accesos deben ser mínimos
  • Grupos simplifican la gestión
  • sudo es preferible a root
  • Eliminar accesos es tan importante como crearlos
  • La seguridad empieza por los usuarios

La gestión de usuarios es control de riesgo, no burocracia.


Resumen

  • Linux es multiusuario por diseño
  • Existen usuarios humanos y de sistema
  • Los grupos son la base de los permisos
  • sudo permite acceso controlado a root
  • SSH debe configurarse con cuidado
  • La gestión del ciclo de vida del usuario es clave

Siguiente paso

En el siguiente módulo entrarás en:

Permisos en producción 04-permisos.md

Donde verás:

  • Permisos aplicados a servicios reales
  • Relación permisos ↔ procesos
  • Errores típicos en producción
  • Cómo diagnosticar problemas sin usar 777