Comando usermod | Modifica cuentas de usuarios en Linux

comando-usermod
comando-usermod

usermod modifica una cuenta local de usuario que ya existe en Linux. Permite cambiar sus grupos, shell de inicio, directorio personal, nombre de acceso, UID y fecha de caducidad. No crea usuarios: para eso se utilizan herramientas como adduser o useradd.

El comando forma parte de los sistemas Linux que incluyen las utilidades shadow. No es una herramienta estándar de macOS, y tampoco modifica por sí solo cuentas administradas desde LDAP, Active Directory u otro servicio central. Antes de usarlo en un servidor, identifica qué sistema gestiona realmente la cuenta.

👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.

🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.

Sintaxis básica del comando usermod

La sintaxis recibe primero las opciones que describen el cambio y, al final, el nombre de una cuenta existente. Para editar cuentas del sistema normalmente necesitas permisos de administración:

sudo usermod [OPCIONES] USUARIO

Explicación de la sintaxis

sudo ejecuta la operación con privilegios administrativos. OPCIONES determina qué propiedad de la cuenta cambia. USUARIO es el nombre de acceso actual; si cambias ese nombre con -l, debes proporcionar el nombre antiguo en la orden.

Cada ejecución modifica los datos locales de la cuenta. No es un comando para “añadir un ajuste” de forma acumulativa por defecto: algunas opciones, como -G, sustituyen una lista existente. Comprueba siempre el estado antes y después del cambio.

Opciones principales de usermod

OpciónQué modificaPrecaución
-aG GRUPOSAñade grupos suplementarios a la cuenta.Usa -a junto con -G para conservar los grupos actuales.
-G GRUPOSDefine la lista completa de grupos suplementarios.Si omites -a, los grupos no incluidos se eliminan de la lista.
-g GRUPOCambia el grupo primario.El grupo debe existir; revisa también la propiedad de archivos fuera del home.
-s SHELLCambia la shell de inicio de sesión.Elige una shell instalada y permitida por la política del sistema.
-d DIRECTORIO -mCambia el home y mueve su contenido.Haz copia antes y verifica permisos, propietario y servicios que usan esa ruta.
-l NUEVO_NOMBRECambia el nombre de acceso.No renombra automáticamente el home ni el buzón de correo.
-L / -UBloquea o desbloquea la contraseña local.No equivale necesariamente a deshabilitar todos los métodos de acceso.
-e FECHAFija la fecha de caducidad de la cuenta, en formato AAAA-MM-DD.Es distinta de la caducidad de la contraseña.
-u UIDCambia el identificador numérico de usuario.Revisa archivos y procesos; puede requerir corregir propietarios fuera del home.

Añadir un usuario a un grupo sin quitar los demás

El ejemplo típico es agregar una cuenta a un grupo suplementario. Comprueba primero que el grupo exista. La opción -aG añade la membresía sin reemplazar las demás:

getent group desarrollo
sudo usermod -aG desarrollo ana
id ana

Sustituye ana y desarrollo por los nombres reales. Si la consulta inicial no muestra el grupo, créalo con la herramienta de administración de grupos apropiada antes de continuar. La salida de id permite comprobar la lista resultante.

No uses -G sin -a para una simple adición: al escribir la lista completa se pueden perder otras membresías, con consecuencias para permisos y servicios. Los cambios de grupo suelen aplicarse al iniciar una sesión nueva; cierra la sesión y vuelve a entrar antes de comprobar el acceso desde la cuenta.

El grupo docker merece una precaución especial: en muchas instalaciones, pertenecer a él permite controlar el daemon y obtener privilegios equivalentes a root. Añade una cuenta solo si necesita ese nivel de control y la política del equipo lo permite.

Cambiar la shell de inicio

Elige una shell instalada y permitida en el sistema. Comprueba qué ruta resuelve el ejecutable y revisa la lista de shells aceptadas antes de modificar la cuenta:

command -v zsh
grep -Fx /usr/bin/zsh /etc/shells
sudo usermod -s /usr/bin/zsh ana
getent passwd ana

En este ejemplo, sustituye /usr/bin/zsh por la ruta real que hayas comprobado. La consulta final muestra los datos locales de la cuenta y ayuda a confirmar que la shell quedó actualizada.

Cambiar y mover el directorio personal

La opción -d actualiza la ruta registrada. Si también añades -m, usermod intenta mover el contenido del home anterior a la nueva ubicación. Antes, revisa espacio libre, permisos, copias de seguridad y procesos que dependan de la ruta:

getent passwd ana
sudo usermod -d /srv/usuarios/ana -m ana
getent passwd ana
ls -ld /srv/usuarios/ana

No asumas que todo el contenido del usuario vive dentro del home. Las tareas, servicios, claves o scripts pueden referirse a la ruta anterior; comprueba esas dependencias y valida el propietario de los archivos después del movimiento.

Cambiar el nombre de acceso

La opción -l cambia el nombre de inicio de sesión, pero no modifica automáticamente el directorio personal ni el buzón. Hazlo en una ventana de mantenimiento, con la cuenta desconectada y una copia disponible:

sudo usermod -l ana_nueva ana
getent passwd ana_nueva

Después, revisa manualmente el home, el correo local, tareas programadas, servicios y permisos que usen el nombre antiguo. El UID no cambia al renombrar una cuenta, pero las rutas y configuraciones de otros programas sí pueden necesitar ajustes.

Bloquear una contraseña no deshabilita todos los accesos

Las opciones -L y -U bloquean o desbloquean la autenticación basada en la contraseña local. El bloqueo no revoca claves SSH, sesiones existentes ni necesariamente otros métodos configurados por PAM; para retirar acceso de forma completa, sigue el procedimiento de la distribución y de los servicios implicados.

sudo usermod -L ana
passwd -S ana
sudo usermod -U ana

Usa el desbloqueo solo cuando la cuenta deba volver a autenticarse con contraseña. Para una baja temporal o definitiva, define el alcance del acceso que quieres retirar en vez de tratar -L como una desactivación universal.

Errores frecuentes y cómo evitarlos

  • Usar -G sin -a al añadir un grupo: puede reemplazar los grupos suplementarios actuales. Consulta primero la lista y usa -aG cuando solo quieras añadir una membresía.
  • Modificar una cuenta conectada: cambios de nombre o UID pueden fallar o dejar procesos activos con una identidad distinta. Programa el cambio cuando el usuario no tenga sesiones ni servicios activos.
  • Asumir que renombrar también mueve el home: -l solo cambia el nombre de acceso. Actualiza aparte las rutas que dependan del nombre anterior.
  • Bloquear solo la contraseña y dar por revocado todo acceso: revisa también claves SSH, tokens, procesos y métodos de autenticación externos.
  • Dar acceso al grupo docker sin evaluar el riesgo: trata esa membresía como un permiso administrativo de alto impacto.

Lecciones relacionadas de Linux

Documentación oficial

La sintaxis y algunas opciones pueden variar entre versiones del paquete shadow. Consulta la página de manual de usermod en Debian y contrasta las reglas locales de cuentas, autenticación y grupos antes de modificar usuarios de un servidor.

Vídeo relacionado

Este Short muestra una modificación básica de una cuenta desde la terminal. Para aplicar los cambios en un sistema real, revisa las advertencias de esta guía y confirma el resultado con las consultas de usuario y grupos.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *