16-repair-users.md (3238B)
1 # Reparar usuários 2 3 [← Índice](README.md) 4 5 Use esta página quando um membro existe no sistema, mas a home ficou incompleta ou com permissões erradas. Sintomas comuns: 6 7 - `https://runv.club/~USER/` mostra `Index of /~USER`; 8 - falta `~/public_html/index.html`; 9 - faltam `~/public_gopher/gophermap` ou `~/public_gemini/index.gmi`; 10 - a home está com dono `root:root` após remoção de jail antiga; 11 - o provisionamento foi interrompido depois do `adduser`. 12 13 ## Ferramenta canônica 14 15 O reparador é: 16 17 ```bash 18 sudo python3 REPO/scripts/admin/repair_user.py --help 19 ``` 20 21 Ele é conservador: 22 23 - cria apenas diretórios e arquivos esperados quando estão ausentes; 24 - não sobrescreve `index.html`, `gophermap` ou `index.gmi` existentes; 25 - corrige dono e modo da home e dos artefatos padrão; 26 - não faz `chown -R`; 27 - não toca em `/var/vmail`, Dovecot, Roundcube, Maildir ou qualquer parte do email. 28 29 ## Reparar um usuário 30 31 Sempre comece com `--dry-run`: 32 33 ```bash 34 cd /opt/runv-server 35 sudo python3 scripts/admin/repair_user.py --user USER --dry-run --verbose 36 ``` 37 38 Se o plano estiver correto: 39 40 ```bash 41 sudo python3 scripts/admin/repair_user.py --user USER 42 ``` 43 44 O script garante: 45 46 | Caminho | Modo | Dono | 47 |---------|------|------| 48 | `/home/USER` | `755` | `USER:USER` | 49 | `/home/USER/.ssh` | `700` | `USER:USER` | 50 | `/home/USER/.ssh/authorized_keys`, se existir | `600` | `USER:USER` | 51 | `/home/USER/public_html` | `755` | `USER:USER` | 52 | `/home/USER/public_html/index.html` | `644` | `USER:USER` | 53 | `/home/USER/public_gopher` | `755` | `USER:USER` | 54 | `/home/USER/public_gopher/gophermap` | `644` | `USER:USER` | 55 | `/home/USER/public_gemini` | `755` | `USER:USER` | 56 | `/home/USER/public_gemini/index.gmi` | `644` | `USER:USER` | 57 58 Se `authorized_keys` estiver ausente, o script avisa e não cria uma chave falsa. A chave pública precisa ser recuperada do pedido original ou instalada por outro fluxo administrativo. 59 60 ## Reparar todos os candidatos 61 62 Para verificar usuários de `/var/lib/runv/users.json` e contas candidatas em `/home`: 63 64 ```bash 65 sudo python3 scripts/admin/repair_user.py --all-users --dry-run --verbose 66 ``` 67 68 Para aplicar: 69 70 ```bash 71 sudo python3 scripts/admin/repair_user.py --all-users 72 ``` 73 74 O modo `--all-users` ignora contas reservadas como `root`, `entre`, `pmurad-admin`, `www-data` e `vmail`. 75 76 ## Validação 77 78 Depois do reparo: 79 80 ```bash 81 sudo ls -la /home/USER 82 sudo ls -la /home/USER/public_html 83 curl -I https://runv.club/~USER/ 84 ``` 85 86 O navegador deve deixar de mostrar `Index of /~USER` quando `public_html/index.html` existir. Se o Apache ainda listar o diretório, confirme: 87 88 ```bash 89 sudo stat /home/USER /home/USER/public_html /home/USER/public_html/index.html 90 sudo journalctl -u apache2 --since "10 minutes ago" 91 ``` 92 93 ## Quando não usar 94 95 Não use `repair_user.py` para: 96 97 - trocar chave SSH; 98 - recriar usuário removido; 99 - corrigir quota; 100 - reparar email local; 101 - mexer em `/var/vmail`; 102 - refazer jail SSH legada. 103 104 Para chave SSH, use o fluxo de atualização de usuário. Para quota, use `create_runv_user.py` / `update_user.py` conforme o caso. Para email local, preserve a regra operacional: o RunV não deve alterar permissões de `/var/vmail`. 105 106 Próximo: [Glossário e referência](15-glossary-and-reference.md).