Como apagar um utilizador em Linux: userdel, deluser e remocao manual

Apagar contas de utilizador em Linux parece, à primeira vista, uma tarefa trivial. Na prática, é um procedimento delicado: uma remoção mal feita deixa ficheiros órfãos, processos pendentes, entradas em crons, chaves SSH abandonadas e até problemas de auditoria. Neste guia vais aprender três métodos para remover utilizadores em Linux — userdel, deluser e remoção manual — e quais as boas práticas a seguir para garantir que não fica nada para trás.

Compreender contas de utilizador em Linux

Uma conta de utilizador no Linux é mais do que uma entrada em /etc/passwd. Ela está espalhada por vários ficheiros e localizações do sistema:

  • /etc/passwd — UID, GID, shell, diretório home.
  • /etc/shadowhash da palavra-passe e política de expiração.
  • /etc/group e /etc/gshadow — pertença a grupos.
  • /home/<utilizador> — ficheiros pessoais e configurações.
  • /var/mail/<utilizador> ou /var/spool/mail/<utilizador>spool de email local.
  • /var/spool/cron/crontabs/<utilizador> — tarefas agendadas.
  • Processos em execução pertencentes ao utilizador.
  • Ficheiros dispersos por /var, /tmp, /opt, etc.
  • Chaves SSH em ~/.ssh/authorized_keys.

Uma remoção completa tem de cobrir todos estes pontos — ou pelo menos os que sejam aplicáveis ao teu sistema.

Antes de apagar: checklist obrigatória

  1. Verifica processos ativos: ps -u <utilizador>
  2. Última atividade: lastlog -u <utilizador>
  3. Chaves SSH: ls -la /home/<utilizador>/.ssh/ e procura referências em /etc/ssh/ ou em authorized_keys noutras contas.
  4. Backup dos dados: mesmo que a política preveja remoção, faz um snapshot ou tarball antes de continuar.
  5. Confirma a identidade da conta: id <utilizador> — um typo pode apagar a conta errada.
  6. Procura ficheiros em todo o sistema: sudo find / -user <utilizador> 2>/dev/null

Método 1: comando userdel

O userdel é a utilidade padrão para apagar contas em Linux. Está disponível em qualquer distribuição.

Sintaxe básica

sudo userdel [opcoes] <utilizador>

Apagar conta mantendo ficheiros

sudo userdel joao

Esta forma remove apenas a conta. O diretório home e o mail spool permanecem — útil quando é necessário preservar o trabalho do utilizador.

Apagar conta e diretório home

sudo userdel -r joao

A flag -r apaga também o diretório home e o mail spool. Não apaga ficheiros do utilizador localizados fora do home (por exemplo, em /var ou /tmp).

Forçar remoção (utilizador com sessão ativa)

sudo userdel -f -r joao

A flag -f força a remoção mesmo que o utilizador tenha sessão ativa — usa com extremo cuidado, pois pode deixar processos órfãos.

Encontrar ficheiros fora do home

sudo find / -user joao -ls 2>/dev/null

Lista todos os ficheiros pertencentes ao utilizador antes de decidir o que fazer com eles (apagar, transferir propriedade, mover para arquivo).

Método 2: comando deluser (Debian/Ubuntu)

Em distribuições baseadas em Debian, o deluser é um script Perl de mais alto nível que envolve o userdel e adiciona funcionalidades práticas.

# Apagar apenas a conta
sudo deluser joao

# Apagar conta e diretorio home
sudo deluser --remove-home joao

# Apagar conta e todos os ficheiros do utilizador
sudo deluser --remove-all-files joao

# Fazer backup antes de apagar
sudo deluser --backup --backup-to /var/backups --remove-home joao

A opção --backup cria um tar.gz com tudo o que vai ser removido — é a forma mais segura de apagar mantendo a possibilidade de reverter.

Método 3: remoção manual

A remoção manual é útil para auditoria forense, para sistemas com configurações invulgares ou quando os métodos automáticos falham. Exige cuidado e nunca deve ser feita em produção sem backup prévio.

Passo 1 — Terminar processos do utilizador

# Listar primeiro
ps -u joao
# Encerrar sessoes/processos em sequencia
sudo pkill -KILL -u joao

Passo 2 — Remover entradas dos ficheiros do sistema

Em vez de editar /etc/passwd e /etc/shadow diretamente com um editor, usa vipw e vigr, que aplicam locking e validação:

sudo vipw          # edita /etc/passwd com lock
sudo vipw -s       # edita /etc/shadow com lock
sudo vigr          # edita /etc/group com lock
sudo vigr -s       # edita /etc/gshadow com lock

Remove em cada um a linha correspondente ao utilizador. Editar estes ficheiros sem locking pode corromper a base de utilizadores em sistemas com criação concorrente de contas.

Passo 3 — Apagar o diretório home

sudo rm -rf /home/joao
sudo rm -f /var/mail/joao
sudo rm -f /var/spool/mail/joao
sudo rm -f /var/spool/cron/crontabs/joao

Passo 4 — Encontrar e tratar ficheiros dispersos

# 1. Listar (sempre primeiro)
sudo find / -user joao -ls 2>/dev/null

# 2. Decidir: apagar, transferir ou arquivar
# Apagar:
sudo find / -user joao -exec rm -rf {} \;
# Transferir propriedade para outro utilizador:
sudo find / -user joao -exec chown maria:maria {} \;

Aviso crítico: nunca executes find / -user X -exec rm -rf {} \; sem teres confirmado primeiro a listagem. Um find mal escrito pode apagar ficheiros do sistema se o UID tiver sido reciclado.

Apagar utilizador mantendo os ficheiros

Em ambientes corporativos, raramente queres simplesmente eliminar os ficheiros: precisas de os transferir para outro responsável ou arquivá-los para auditoria.

Opção A — Arquivar antes de apagar

sudo mkdir -p /var/backups/utilizadores
sudo tar -czf /var/backups/utilizadores/joao_$(date +%Y%m%d).tar.gz /home/joao
sudo userdel -r joao

Opção B — Transferir propriedade

sudo chown -R maria:maria /home/joao
sudo mv /home/joao /home/joao_arquivado
sudo userdel joao

Verificar se o utilizador foi apagado

# A conta nao deve existir
id joao                       # deve devolver "no such user"
getent passwd joao            # sem output

# Verificar ficheiros do sistema
sudo grep "^joao:" /etc/passwd /etc/shadow /etc/group /etc/gshadow

# Verificar diretorio home
ls -ld /home/joao

# Verificar processos
ps -u joao

# Verificar ficheiros remanescentes
sudo find / -user joao 2>/dev/null

Se algum destes comandos ainda devolver resultados, a remoção foi incompleta.

Erros comuns e resolução

ErroCausaSolução
userdel: user joao is currently used by process XSessão ou processo ativosudo pkill -KILL -u joao e voltar a tentar; em último caso userdel -f
userdel: cannot remove entry 'joao' from /etc/passwdFicheiro com lock ou em modo read-onlyVerificar com lsof /etc/passwd e remontar com mount -o remount,rw /
Diretório home não pode ser apagadoAtributos imutáveissudo chattr -i -R /home/joao e tentar de novo
Conta reaparece após rebootSistema de gestão centralizada (LDAP, AD, NIS)Apagar na fonte da diretoria, não localmente
UID reciclado e ficheiros «mudam de dono»Outro utilizador criado com o mesmo UIDSempre apagar (ou transferir) ficheiros antes de remover a conta

Boas práticas de segurança

  1. Política antes de procedimento: documenta o que acontece a uma conta após offboarding (apagar, desativar, arquivar, transferir).
  2. Desativar primeiro, apagar depois: em vez de apagar imediatamente, considera bloquear com usermod -L e chage -E 0 <user>, e só remover após um período de retenção.
  3. Backup obrigatório: antes de qualquer remoção definitiva, gera um arquivo verificável (com checksum).
  4. Revogar chaves SSH em bastion hosts: a chave do utilizador pode estar autorizada noutros servidores — usa configuração centralizada (Ansible, Puppet) para garantir consistência.
  5. Rotação de segredos: palavras-passe partilhadas, tokens API, chaves de serviço a que o utilizador tinha acesso devem ser rodadas, não apenas anuladas.
  6. Registos de auditoria: guarda evidências da remoção em /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL) — e expede-as para um SIEM (Wazuh, Graylog, ELK).
  7. Validação cross-system: em infraestrutura distribuída, confirma a remoção em todos os nodes; uma conta órfã num servidor secundário é uma porta de entrada.
  8. Não reutilizar UIDs: deixa o sistema atribuir UIDs novos para evitar herança de permissões.

Automatizar a remoção de contas inativas

Exemplo simples para identificar contas sem login há mais de 90 dias:

lastlog -b 90 | awk 'NR>1 && $2!="**Never" {print $1}'

A partir desta lista, integra com a tua política: notificar o gestor, bloquear com usermod -L, agendar remoção. Nunca automatizes o userdel -r sem revisão humana — o risco de eliminar a conta errada é demasiado elevado.

Conclusão

Apagar um utilizador em Linux é menos uma questão de comando e mais uma questão de processo. O userdel e o deluser são apenas a etapa final de um procedimento que deve incluir auditoria prévia, backup, revogação de credenciais cruzadas, transferência de ficheiros e validação posterior. Em ambientes profissionais, este fluxo deve estar documentado, automatizável e auditável — cada conta órfã é um vetor potencial de movimento lateral para um atacante.

Se chegaste aqui através do nosso guia sobre como criar utilizadores em Linux, tens agora o ciclo de vida completo: criação, gestão e remoção. Aplica estas práticas no teu próximo offboarding — e dorme melhor.

Domina a linha de comandos Linux

Gerir o ciclo de vida de utilizadores é apenas uma das competências de quem domina o terminal. O Workshop — Linha de Comandos Linux da HJFR leva-te do primeiro prompt à automação com scripts: 13 módulos e 184 capítulos interativos, em português, com demonstrações de terminal e exercícios práticos na nossa plataforma de e-learning.

Comentários

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *