A exclusão de um usuário no Linux é um processo que demanda atenção aos detalhes. Para administradores de sistema, é crucial eliminar completamente todos os vestígios da conta e seus acessos. Este guia detalha os passos necessários para realizar essa tarefa de forma eficaz.
Caso deseje apenas remover a conta de usuário sem se preocupar com a finalização de processos em execução ou outras ações de limpeza, consulte a seção “Excluindo a conta de usuário” abaixo. É importante notar que distribuições baseadas em Debian utilizam o comando `deluser`, enquanto outras distribuições Linux empregam o comando `userdel`.
Gerenciamento de Contas de Usuário no Linux
Desde o surgimento dos primeiros sistemas de tempo compartilhado, no início da década de 1960, que possibilitaram o trabalho de múltiplos usuários em um único computador, tornou-se imprescindível isolar e organizar os arquivos e dados de cada usuário, separando-os dos demais. Assim, surgiram as contas de usuário e, as senhas.
O gerenciamento de contas de usuário implica em responsabilidades administrativas. É necessário criar contas quando um usuário precisa acessar o sistema pela primeira vez e removê-las quando o acesso não é mais necessário. No Linux, a remoção de um usuário e seus dados exige uma sequência de passos para garantir uma exclusão completa e organizada.
Se você é o administrador do sistema, essa responsabilidade é sua. Veja como executar essa tarefa corretamente.
Cenário de Exclusão de Conta
A exclusão de uma conta pode ser motivada por diversas razões. Um funcionário pode mudar de equipe ou deixar a empresa. A conta pode ter sido configurada para uma colaboração temporária com um visitante de outra organização. Projetos colaborativos são comuns em ambientes acadêmicos e corporativos, e ao seu término, o administrador do sistema deve realizar a manutenção necessária, removendo as contas não mais utilizadas.
Um cenário delicado ocorre quando um usuário é desligado abruptamente devido a alguma irregularidade. Nesses casos, o administrador tem pouco tempo para se preparar e precisa agir rapidamente para bloquear, encerrar e excluir a conta, além de providenciar uma cópia dos arquivos do usuário para análise posterior, se necessário.
Para este exemplo, vamos simular que um usuário, chamado Eric, cometeu uma ação que justifica sua remoção imediata. Ele está trabalhando normalmente, sem saber da decisão. Assim que o sinal for dado, ele será escoltado para fora do prédio.
Tudo está preparado. A atenção está voltada para você.
Verificação de Login do Usuário
Vamos verificar se o usuário realmente está logado e, se sim, quantas sessões ele tem ativas. O comando `who` listará as sessões ativas.
who
Observamos que Eric está logado uma vez. Vamos agora verificar quais processos ele está executando.
Análise dos Processos do Usuário
Podemos utilizar o comando `ps` para listar os processos executados pelo usuário. A opção `-u` (usuário) permite restringir a saída do comando aos processos pertencentes à conta do usuário especificado.
ps -u eric
Para obter mais detalhes sobre os processos, podemos usar o comando `top`. O comando `top` também possui a opção `-U` (usuário) para restringir a saída aos processos de um único usuário. Note que neste caso, a opção é “U” maiúsculo.
top -U eric
Podemos observar o uso de memória e CPU de cada processo e identificar rapidamente qualquer atividade suspeita. Antes de encerrarmos todos os processos, é aconselhável verificar se nenhum outro usuário será afetado pelo encerramento dos processos da conta de Eric.
Não parece haver nada incomum, Eric está apenas visualizando um arquivo. Podemos prosseguir. No entanto, antes de finalizarmos os processos, vamos congelar a conta, bloqueando a senha.
Bloqueio da Conta
Bloquearemos a conta antes de encerrar os processos, pois, ao finalizá-los, o usuário será desconectado. Se já tivermos alterado sua senha, ele não conseguirá logar novamente.
As senhas de usuário criptografadas são armazenadas no arquivo `/etc/shadow`. Normalmente, não seria necessário se preocupar com os próximos passos, mas para que você possa observar o que ocorre no arquivo `/etc/shadow` ao bloquear a conta, faremos uma pequena análise. Podemos usar o seguinte comando para verificar os dois primeiros campos da entrada da conta do usuário Eric.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
O comando `awk` processa campos de arquivos de texto, manipulando-os se necessário. A opção `-F` (separador de campo) informa ao `awk` que o arquivo usa dois pontos “:” para separar os campos. Vamos procurar por uma linha que contenha o padrão “eric”. Para as linhas encontradas, serão exibidos o primeiro e o segundo campos, que são o nome da conta e a senha criptografada.
A entrada da conta de usuário de Eric é exibida.
Para bloquear a conta, utilizaremos o comando `passwd`. Usaremos a opção `-l` (bloquear) e informaremos o nome da conta de usuário para bloquear.
sudo passwd -l eric
Se verificarmos novamente o arquivo `/etc/passwd`, veremos o que ocorreu.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Um ponto de exclamação foi adicionado ao início da senha criptografada. Ele não sobrescreve o primeiro caractere, mas é inserido no início da senha. Esta alteração é suficiente para impedir que o usuário faça login na conta.
Agora que impedimos o usuário de logar novamente, podemos encerrar os seus processos e desconectá-lo.
Encerramento dos Processos
Existem diferentes métodos para encerrar os processos de um usuário. No entanto, o comando que será utilizado aqui é bastante comum e representa uma implementação mais moderna em comparação com outras alternativas. O comando `pkill` irá encontrar e encerrar os processos. Estamos utilizando o sinal `KILL` e a opção `-u` (usuário).
sudo pkill -KILL -u eric
Você retornará ao prompt de comando. Para confirmar que a ação foi realizada, vamos usar novamente o comando `who`:
who
A sessão de Eric foi finalizada. Ele foi desconectado e seus processos foram encerrados. A urgência da situação diminuiu. Podemos agora continuar com a limpeza, enquanto a equipe de segurança escolta Eric até a saída do prédio.
Arquivamento do Diretório Home do Usuário
É possível que, em um cenário como este, o acesso aos arquivos do usuário seja necessário no futuro, seja para investigação ou para consulta por seu substituto. Utilizaremos o comando `tar` para arquivar todo o diretório home.
As opções utilizadas são:
c: Cria um arquivo compactado.
f: Especifica o nome do arquivo.
j: Utiliza a compactação bzip2.
v: Exibe detalhes da criação do arquivo.
sudo tar cfjv eric-20200820.tar.bz /home/eric
Uma grande quantidade de texto será exibida na janela do terminal. Para verificar se o arquivo foi criado, use o comando `ls`, com as opções `-l` (formato longo) e `-h` (legível para humanos).
ls -lh eric-20200802.tar.bz
Um arquivo de 722 MB foi criado. Ele pode ser copiado para um local seguro para análise posterior.
Remoção de Tarefas Cron
É importante verificar se existem tarefas cron agendadas para a conta de usuário Eric. Uma tarefa cron é um comando que é executado em horários ou intervalos específicos. Podemos verificar se existem tarefas cron agendadas para esta conta usando o comando `ls`:
sudo ls -lh /var/spool/cron/crontabs/eric
Se houver algo neste local, isso significa que existem tarefas cron agendadas para esta conta de usuário. Podemos excluí-las com o comando `crontab`. A opção `-r` (remover) removerá as tarefas e a opção `-u` (usuário) indica ao `crontab` as tarefas de qual usuário remover.
sudo crontab -r -u eric
As tarefas são removidas silenciosamente. Se Eric suspeitasse de sua remoção, ele poderia ter agendado alguma tarefa maliciosa. Esta etapa é uma prática recomendada.
Remoção de Tarefas de Impressão
O usuário poderia ter tarefas de impressão pendentes? Para garantir, podemos limpar a fila de impressão de todas as tarefas da conta do usuário. O comando `lprm` remove as tarefas da fila de impressão. A opção `-U` (nome de usuário) permite remover as tarefas pertencentes à conta de usuário especificada:
lprm -U eric
As tarefas são removidas e você retorna ao prompt de comando.
Exclusão da Conta de Usuário
Já realizamos o backup dos arquivos do diretório `/home/eric/`, portanto, podemos prosseguir e excluir a conta do usuário, removendo também o diretório `/home/eric/` simultaneamente.
O comando a ser utilizado depende da distribuição Linux que você está usando. Para distribuições Linux baseadas em Debian, o comando é `deluser`, e para as outras distribuições Linux, é `userdel`.
No Ubuntu, ambos os comandos estão disponíveis. Apesar da expectativa de que um fosse um apelido do outro, eles são binários distintos.
type deluser
type userdel
Apesar de ambos estarem disponíveis, a recomendação é usar `deluser` em distribuições derivadas do Debian:
“`Userdel` é um utilitário de baixo nível para remover usuários. No Debian, os administradores geralmente devem usar `deluser` (8) em seu lugar.”
Portanto, o comando a ser usado neste computador Ubuntu é `deluser`. Como desejamos que o diretório inicial também seja removido, utilizaremos a opção `–remove-home`:
sudo deluser --remove-home eric
O comando a ser utilizado em distribuições não Debian é `userdel`, com a opção `–remove`:
sudo userdel --remove eric
Todos os vestígios da conta de usuário Eric foram apagados. Podemos verificar se o diretório `/home/eric/` foi removido:
ls /home
O grupo `eric` também foi removido, já que a conta de usuário `eric` era a única entrada nele. Podemos confirmar isso facilmente, redirecionando o conteúdo de `/etc/group` para o comando `grep`:
sudo less /etc/group | grep eric
Conclusão
Eric, por seus erros, foi removido. A equipe de segurança o está acompanhando para fora do prédio, e você já garantiu a segurança e arquivamento de seus arquivos, excluiu sua conta e limpou o sistema de qualquer resquício.
A precisão é mais importante do que a velocidade. Certifique-se de analisar cada etapa antes de executá-la. Você não quer que alguém volte para perguntar: “Não, era o outro Eric”.