# Usuários Linux

Usuários do sistema no VPS com home privado, sudo opcional, mudança de senha forçada e exclusão com confirmação.

Fonte: https://ardumaker.com/pt/docs/usuarios-linux/

- Categoria: Servidores e infraestrutura
- Estado: Disponível
- Requisitos: Um VPS da empresa ligado; Para listar e ver: acesso ao VPS; Para criar, editar ou apagar: ser admin da empresa
- Ferramentas MCP (Só leem): `listar_usuarios_vps`, `ver_usuario_vps`
- Ferramentas MCP (Escrevem ou modificam): `crear_usuario_vps`, `editar_usuario_vps`
- Ferramentas MCP (Destrutivas): `eliminar_usuario_vps`

## O que permite fazer?

- Listar os usuários com que se pode entrar no VPS e quais têm `sudo`.
- Criar um usuário com senha, home privado e, se pedido, `sudo`.
- Obrigar a mudar a senha no primeiro acesso (ativado por padrão).
- Mudar a senha ou tirar e dar `sudo`.
- Apagar um usuário, com ou sem a sua pasta pessoal.

## Quando convém usar?

- Dar acesso por SSH ou por terminal a uma pessoa sem compartilhar o `root`.
- Um usuário próprio para correr uma aplicação.
- Retirar o acesso a alguém que saiu da equipe.

## Como funciona na ArduMaker?

### Criação

1. Valida-se o nome: começa com minúscula ou `_`, segue com minúsculas, números, `_` ou `-`, até 32 caracteres. A senha é obrigatória.
2. Se o usuário não existe, é criado com `useradd -m -s /bin/bash`, define-se a senha e, com `force_password_change`, marca-se como expirada (`chage -d 0`). Um usuário que já existia não é tocado.
3. Deixa-se o seu home `/home/<usuario>` com permissões 700 e os arquivos de arranque de `/etc/skel` que faltem.
4. Com `sudo=true` é acrescentado ao grupo `sudo`.

### Listagem

Só aparecem usuários “humanos”: UID 1000 ou mais, com shell de login e senha ativa, mais o `root`. Os usuários de sistema (`www-data`, `postgres`…) não são listados.

### Exclusão

- `root` nunca pode ser apagado.
- Um agente tem de enviar `confirmacion` com o nome exato do usuário: a proteção obriga a ler o que se vai destruir.
- Por padrão também se apaga a pasta pessoal (`remove_home=true`); com `false` conserva-se.
- Os processos que correm como esse usuário continuam até terminarem: apagar a conta não os mata.
- O nome do usuário apagado fica no registro de atividade do VPS.

## O que muda realmente?

- `/etc/passwd`, `/etc/shadow` e os grupos do sistema (`sudo`).
- `/home/<usuario>` com permissões 700, propriedade do usuário.
- A lista de usuários que a ArduMaker guarda do VPS é atualizada ao criar e ao listar.
- Uma entrada no registro de atividade do VPS por cada operação.

## Entrar com o usuário

Criar o usuário não abre o SSH. Para entrar de fora é preciso um redirecionamento para a porta 22, idealmente com vencimento (ver [Firewall e portas](https://ardumaker.com/pt/docs/firewall-y-puertos)):

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

Com `force_password_change=true`, no primeiro acesso o sistema pede a senha atual e uma nova.

## Esquema

**Criar um usuário**

```text
Pedido (usuário, senha, sudo)
  ↓
Validação (nome válido, admin da empresa)
  ↓
Agente do VPS (useradd → chpasswd → chage → usermod)
  ↓
Resultado (usuário com home 700 e, opcional, sudo)
```

## Resultado esperado

- `listar_usuarios_vps` devolve `users` e `sudo_users` (inclui sempre o `root`).
- `ver_usuario_vps` devolve a linha do usuário em `/etc/passwd`.
- `crear_usuario_vps` sobre um usuário que já existe devolve esse usuário com `ya_existia: true` em vez de falhar.

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

## Erros e resolução

| Resposta | Causa | O que fazer |
| --- | --- | --- |
| 400 `Invalid username` | Maiúsculas, espaços ou caracteres não permitidos | Usar o formato válido |
| 404 `User '<usuario>' not found` | Esse usuário não existe | Listar primeiro |
| 403 ao apagar `root` | `root` está protegido | — |
| 428 sem `confirmacion` | Um agente não enviou o nome exato | Reenviar a mesma chamada com `confirmacion` igual ao usuário |
| 403 | Criar, editar ou apagar requer admin da empresa | Pedir a um admin |

> **PELIGRO:** Apagar um usuário é irreversível: não há lixeira, e por padrão a sua pasta pessoal vai com ele.

Criar é seguro de repetir (devolve o existente com `ya_existia`), mas nesse caso a senha não é alterada. Um `userdel` ou `deluser` por `ejecutar_comando_vps` é sempre rejeitado, sem opção de confirmar: o caminho previsto é `eliminar_usuario_vps`.

## Relação com MCP

Sim, nos perfis `/mcp` e `/mcp/vps`.

| Ferramenta | Tipo | Notas |
| --- | --- | --- |
| `listar_usuarios_vps`, `ver_usuario_vps` | Leitura | — |
| `crear_usuario_vps` | Escrita | Admin; idempotente por nome |
| `editar_usuario_vps` | Escrita | Admin; `password` e/ou `sudo` |
| `eliminar_usuario_vps` | Destrutiva, irreversível | Admin; `confirmacion` = nome exato |

Referência em [/mcp/docs](https://ardumaker.com/pt/mcp/docs) e exemplos em [/mcp/vps](https://ardumaker.com/pt/mcp/vps).

## Funcionalidades relacionadas

- [Servidores VPS](https://ardumaker.com/pt/docs/vps/)
- [Terminal web](https://ardumaker.com/pt/docs/terminal-web/)
- [Firewall e portas](https://ardumaker.com/pt/docs/firewall-y-puertos/)
- [Auditoria de agentes](https://ardumaker.com/pt/docs/auditoria-de-agentes/)
