> La lista completa de artículos está en [llms.txt](https://docs.f3cloud.com/llms.txt). Cada página tiene versión en Markdown, basta con añadir .md a su dirección. Esta página en Markdown: [https://docs.f3cloud.com/es/technical-docs/usermod-command-guide.md](https://docs.f3cloud.com/es/technical-docs/usermod-command-guide.md).

# Cómo gestionar usuarios en Linux con usermod

Cómo usar el comando usermod en Linux. Añadir un usuario a los grupos sudo y docker, cambiar el nombre, la carpeta personal, la shell y el UID, bloquear una cuenta, chuleta y errores frecuentes.

**usermod** es el comando para modificar una cuenta de usuario que ya existe en Linux. Con él se añade un usuario a grupos, se le cambia el nombre, se mueve su carpeta personal, se cambia su shell y se bloquea temporalmente su acceso.

Todos los comandos de abajo se ejecutan como **root** o con `sudo`. Los hemos probado en Debian 12, y en Ubuntu y otras distribuciones funcionan igual.

> **Crear un usuario, no modificarlo.**
>
> Si el usuario todavía no existe, créalo primero.\
> En Ubuntu y Debian el comando es `adduser nombre`.\
> En AlmaLinux y CentOS es `useradd -m nombre`.
>
> Tienes un ejemplo con un usuario aparte para entrar por SSH en el artículo [sobre el acceso con claves SSH](https://docs.f3cloud.com/es/client-area/protect-vps-from-unauthorised-access/ssh-keys.md).

***

### Cómo ver la configuración actual de un usuario

Antes de cambiar nada, conviene comprobar qué tiene configurado ahora el usuario.

```bash
# UID, grupo principal y todos los grupos adicionales del usuario
id username

# Línea del usuario en /etc/passwd: carpeta personal y shell
getent passwd username
```

***

### Añadir un usuario a un grupo

Es la tarea más habitual, por ejemplo para dar permisos de administrador con `sudo` o acceso a Docker.

```bash
# Añadimos el usuario al grupo sudo (en Ubuntu y Debian)
usermod -aG sudo username

# En AlmaLinux, CentOS y Oracle Linux los administradores están en el grupo wheel
usermod -aG wheel username

# Para varios grupos a la vez, los separamos con comas y sin espacios
usermod -aG docker,www-data username
```

> **No olvides la opción -a.**
>
> La opción `-G` sin `-a` sustituye toda la lista de grupos adicionales. El usuario se quedará solo en los grupos indicados y perderá el resto, por ejemplo el acceso a `sudo`. Para añadir, escribe siempre `-aG`.

Los grupos nuevos se aplican la próxima vez que el usuario inicie sesión. Si ahora está conectado por SSH, que se vuelva a conectar y después compruebe el resultado con el comando `id`.

***

### Quitar un usuario de un grupo

```bash
# Quitamos el usuario del grupo docker
gpasswd -d username docker
```

Se consigue lo mismo con el comando `usermod -rG docker username`, pero la variante con `gpasswd` funciona en todas las distribuciones.

***

### Cambiar el grupo principal

Cada usuario tiene un único grupo principal. Ese es el grupo que reciben los archivos nuevos que crea.

```bash
# Hacemos que developers sea el grupo principal del usuario. El grupo ya debe existir
usermod -g developers username
```

***

### Cambiar el nombre de un usuario

La opción `-l` solo cambia el login. La carpeta personal y el grupo propio conservan los nombres antiguos, por eso normalmente se renombran junto con el login.

```bash
# Cambiamos el login olduser por newuser
usermod -l newuser olduser

# Movemos la carpeta personal al nuevo nombre junto con su contenido
usermod -d /home/newuser -m newuser

# Renombramos el grupo propio del usuario
groupmod -n newuser olduser
```

> **El usuario no debe tener la sesión iniciada.**
>
> No podrás renombrar un usuario que tenga procesos en marcha. Pídele que cierre la sesión o termina tú sus sesiones, y después repite el comando.

***

### Mover la carpeta personal

```bash
# Asignamos una nueva carpeta personal y movemos a ella todos los archivos
usermod -d /data/home/username -m username
```

Sin la opción `-m` solo cambiará la ruta en la configuración, y los archivos se quedarán en el sitio antiguo.

***

### Cambiar la shell

```bash
# Lista de shells instaladas en el sistema
cat /etc/shells

# Hacemos que bash sea la shell del usuario
usermod -s /bin/bash username

# Prohibimos el acceso a la consola, por ejemplo para un usuario de servicio
usermod -s /usr/sbin/nologin username
```

***

### Bloquear y desbloquear un usuario

```bash
# Bloqueamos el acceso con contraseña
usermod -L username

# Quitamos el bloqueo
usermod -U username

# Desactivamos la cuenta por completo con una fecha de caducidad en el pasado
usermod -e 1 username

# Quitamos la fecha de caducidad
usermod -e "" username
```

> **Bloquear la contraseña no cierra el acceso con clave.**
>
> `usermod -L` solo impide entrar con contraseña. Si el usuario tiene configurada una clave SSH, podrá seguir entrando. Para cerrar el acceso por completo, usa `usermod -e 1` o borra sus claves de `~/.ssh/authorized_keys`.

***

### Cambiar el UID

```bash
# Asignamos al usuario el UID 1050. El número no debe estar ocupado
usermod -u 1050 username
```

`usermod` cambia por sí solo el propietario de los archivos de la carpeta personal del usuario. Los archivos de otros sitios se quedan con el UID antiguo, y puedes encontrarlos y corregirlos así.

```bash
# En lugar de 1001, pon el UID antiguo del usuario
find / -xdev -user 1001 -exec chown -h username {} \;
```

***

### Chuleta

| Comando | Qué hace |
| --- | --- |
| `usermod -aG grupo nombre` | Añadir a un grupo adicional |
| `gpasswd -d nombre grupo` | Quitar de un grupo |
| `usermod -g grupo nombre` | Cambiar el grupo principal |
| `usermod -l nuevo antiguo` | Cambiar el nombre del usuario |
| `usermod -d ruta -m nombre` | Mover la carpeta personal |
| `usermod -s shell nombre` | Cambiar la shell |
| `usermod -L nombre` / `-U` | Bloquear o desbloquear la contraseña |
| `usermod -e 1 nombre` | Desactivar la cuenta por completo |
| `usermod -u UID nombre` | Cambiar el UID |

***

### Preguntas frecuentes

<details>

<summary>He añadido el usuario a un grupo, pero no tiene los permisos</summary>

Los grupos se aplican al iniciar sesión. El usuario tiene que cerrar la sesión y volver a conectarse, y después el comando `id` mostrará el grupo nuevo.

</details>

<details>

<summary>Dice que el grupo no existe</summary>

Primero crea el grupo con el comando `groupadd nombre_grupo` y después vuelve a ejecutar `usermod`. Puedes ver la lista de todos los grupos con el comando `getent group`.

</details>

<details>

<summary>No consigo cambiar el nombre del usuario</summary>

Lo más probable es que el usuario tenga la sesión iniciada o procesos en marcha. Míralos con el comando `ps -u username`, termina las sesiones y repite `usermod -l`.

</details>

<details>

<summary>He ejecutado por error usermod -G sin -a</summary>

El usuario se ha quedado solo en los grupos indicados. Devuélvele los grupos que necesita con el mismo comando y la opción `-aG`, por ejemplo `usermod -aG sudo username`. Si era tu único administrador y has perdido el acceso a `sudo`, entra en el servidor como root con el botón <kbd>Console</kbd> del área de cliente.

</details>

***

### Nuestros recursos

**Canal de Telegram:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Web del hosting:** [https://f3cloud.com](https://f3cloud.com/es)
