Coloque os nomes das contas que você deseja manter, um nome por linha, no arquivo keepers
e execute:
cut -d: -f1 /etc/passwd | grep -vFf keepers | while read name ; do deluser "$name" ; done
O texto acima usa cut
para obter todos os nomes de usuário atuais de /etc/passwd
. O comando grep -vFf keepers
remove dessa lista todos os nomes, exceto os listados em keepers
. Note que existem muitos usuários do sistema que você precisará manter, como root, daemon, sys, mail, lp, etc. O loop while del elimina cada nome.
deluser tem muitas opções. Veja man deluser
.
Você pode querer fazer o backup de seus arquivos /etc/passwd
, /etc/group
e outros antes de fazer isso apenas para garantir.
Para os cautelosos, uma abordagem em duas etapas
O primeiro passo cria um arquivo com uma lista de todas as contas a serem removidas:
cut -d: -f1 /etc/passwd | grep -vFf keepers >goners
O arquivo goners
deve ser cuidadosamente inspecionado para garantir que não haja contas importantes nele. Pode ser editado manualmente, se desejado. Então corra:
while read name ; do deluser "$name" ; done <goners