runv-server

server tooling for runv.club
Log | Files | Refs | README

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).