# Usuarios Linux

Usuarios del sistema en el VPS con home privado, sudo opcional, cambio de contraseña forzado y borrado con confirmación.

Fuente: https://ardumaker.com/docs/usuarios-linux/

- Categoría: Servidores e infraestructura
- Estado: Disponible
- Requisitos: Un VPS de la empresa encendido; Para listar y ver: acceso al VPS; Para crear, editar o borrar: ser admin de la empresa
- Herramientas MCP (Solo leen): `listar_usuarios_vps`, `ver_usuario_vps`
- Herramientas MCP (Escriben o modifican): `crear_usuario_vps`, `editar_usuario_vps`
- Herramientas MCP (Destructivas): `eliminar_usuario_vps`

## ¿Qué permite hacer?

- Listar los usuarios con los que se puede entrar al VPS y cuáles tienen `sudo`.
- Crear un usuario con contraseña, home privado y, si se pide, `sudo`.
- Obligar a cambiar la contraseña en el primer ingreso (activado por defecto).
- Cambiar la contraseña o quitar y dar `sudo`.
- Borrar un usuario, con o sin su carpeta personal.

## ¿Cuándo conviene usarlo?

- Dar acceso por SSH o por terminal a una persona sin compartir `root`.
- Un usuario propio para correr una aplicación.
- Quitar el acceso a alguien que dejó el equipo.

## ¿Cómo funciona en ArduMaker?

### Alta

1. Se valida el nombre: empieza con minúscula o `_`, sigue con minúsculas, números, `_` o `-`, hasta 32 caracteres. La contraseña es obligatoria.
2. Si el usuario no existe, se crea con `useradd -m -s /bin/bash`, se le pone la contraseña y, con `force_password_change`, se la marca como vencida (`chage -d 0`). Un usuario que ya existía no se toca.
3. Se deja su home `/home/<usuario>` con permisos 700 y los archivos de inicio de `/etc/skel` que falten.
4. Con `sudo=true` se lo agrega al grupo `sudo`.

### Listado

Solo aparecen usuarios «humanos»: UID 1000 o más, con shell de login y contraseña habilitada, más `root`. Los usuarios de sistema (`www-data`, `postgres`…) no se listan.

### Borrado

- `root` nunca se puede borrar.
- Un agente tiene que mandar `confirmacion` con el nombre exacto del usuario: la guarda obliga a leer qué se está por destruir.
- Por defecto también se borra la carpeta personal (`remove_home=true`); con `false` se conserva.
- Los procesos que corren como ese usuario siguen hasta que terminen: borrar la cuenta no los mata.
- El nombre del usuario borrado queda en el registro de actividad del VPS.

## ¿Qué cambia realmente?

- `/etc/passwd`, `/etc/shadow` y los grupos del sistema (`sudo`).
- `/home/<usuario>` con permisos 700, propiedad del usuario.
- La lista de usuarios que ArduMaker guarda del VPS se actualiza al crear y al listar.
- Una entrada en el registro de actividad del VPS por cada operación.

## Entrar con el usuario

Crear el usuario no abre SSH. Para entrar desde afuera hace falta una redirección al puerto 22, idealmente con vencimiento (ver [Firewall y puertos](https://ardumaker.com/docs/firewall-y-puertos)):

```bash
ssh -p <host_port> usuario@<dnsip>
```

Con `force_password_change=true`, en el primer ingreso el sistema pide la contraseña actual y una nueva.

## Esquema

**Crear un usuario**

```text
Pedido (usuario, contraseña, sudo)
  ↓
Validación (nombre válido, admin de la empresa)
  ↓
Agente del VPS (useradd → chpasswd → chage → usermod)
  ↓
Resultado (usuario con home 700 y, opcional, sudo)
```

## Resultado esperado

- `listar_usuarios_vps` devuelve `users` y `sudo_users` (siempre incluye `root`).
- `ver_usuario_vps` devuelve la línea del usuario en `/etc/passwd`.
- `crear_usuario_vps` sobre un usuario que ya existe devuelve ese usuario con `ya_existia: true` en lugar de fallar.

```bash
id usuario
sudo -l -U usuario
```

## Errores y resolución

| Respuesta | Causa | Qué hacer |
| --- | --- | --- |
| 400 `Invalid username` | Mayúsculas, espacios o caracteres no permitidos | Usar el formato válido |
| 404 `User '<usuario>' not found` | No existe ese usuario | Listar primero |
| 403 al borrar `root` | `root` está protegido | — |
| 428 sin `confirmacion` | Un agente no mandó el nombre exacto | Reenviar la misma llamada con `confirmacion` igual al usuario |
| 403 | Crear, editar o borrar requiere admin de la empresa | Pedirlo a un admin |

> **PELIGRO:** Borrar un usuario es irreversible: no hay papelera, y por defecto su carpeta personal se va con él.

Crear es seguro de repetir (devuelve el existente con `ya_existia`), pero en ese caso la contraseña no se cambia. Un `userdel` o `deluser` por `ejecutar_comando_vps` se rechaza siempre, sin opción de confirmar: el camino previsto es `eliminar_usuario_vps`.

## Relación con MCP

Sí, en los perfiles `/mcp` y `/mcp/vps`.

| Herramienta | Tipo | Notas |
| --- | --- | --- |
| `listar_usuarios_vps`, `ver_usuario_vps` | Lectura | — |
| `crear_usuario_vps` | Escritura | Admin; idempotente por nombre |
| `editar_usuario_vps` | Escritura | Admin; `password` y/o `sudo` |
| `eliminar_usuario_vps` | Destructiva, irreversible | Admin; `confirmacion` = nombre exacto |

Referencia en [/mcp/docs](https://ardumaker.com/mcp/docs) y ejemplos en [/mcp/vps](https://ardumaker.com/mcp/vps).

## Funciones relacionadas

- [Servidores VPS](https://ardumaker.com/docs/vps/)
- [Terminal web](https://ardumaker.com/docs/terminal-web/)
- [Firewall y puertos](https://ardumaker.com/docs/firewall-y-puertos/)
- [Auditoría de agentes](https://ardumaker.com/docs/auditoria-de-agentes/)
