del_user - cuida dos 4 passos para remover um usuário do sistema

Publicado por Pedro Fernandes (última atualização em 18/03/2020)

[ Hits: 481 ]

Download del_user




Cuida dos 4 passos necessários para remover um usuário do sistema.

passo 1 - pegar o nome correto do usuário

passo 2 - parar os processos que pertencem ao usuário

passo 3 - determinar todos os arquivos no sistema que pertencem ao usuário

passo 4 - deletar a conta do usuário

Tem que ser root.

  



Esconder código-fonte

#!/bin/bash
#
#
# ------------------------------------------------------------- #
#
#
# del_user    Cuida dos 4 passos precisos
#             para remover um usuário do
#             sistema.
#
#             passo 1 - pegar o nome correto do usuário
#             passo 2 - parar os processos que pertencem
#                       ao usuáruio
#             passo 3 - determinar todos os arquivos no
#                       sistema que pertencem ao usuário
#             passo 4 - deletar a conta do usuário
#
#
# autor       pedro fernandes
# email       pedrobfernandes@protonmail.com
#
#
# ------------------------------------------------------------- #
#
#
# Parametros
#
#
REGISTRO=/etc/passwd
#
#
# ------------------------------------------------------------- #
#
#
# Funcoes
#
#
function rem_process {
   #
   #
   clear
   echo "Parando processos..."
   #
   #
   local process="$(ps -u ${correto%%:*} --no-heading | \
                  gawk '{print $1}')"
   #
   #
   for num in $(echo "$process")
   do
      kill -9 $num
   done
   #
   #
   echo "Processos parados..."
   echo "Prosseguindo..."
}
#
#
function find_process {
   #
   #
   processos=$(ps -u ${correto%%:*})
   num_processos=$(echo "$processos" | wc -l)
   #
   #
   clear
   if [ -z "$processos" ]
   then
      echo "Usuário não tem processos ativos."
   else
      echo "Encontramos ${num_processos} processos ativos."
      echo "Processos são os seguintes:"
      sleep 2
      clear
      echo "$processos"
      echo
      echo -n "Deseja parar estes processos: [s\n]: "
      read escolha
      #
      #
      case $escolha in
      s|S|sim|SIM|Sim|sIm|SIm|sIM)
      rem_process
      ;;
      *)
      echo "Parando o script..."
      exit
      ;;
      esac
   fi
}
#
#
function correct_account {
   #
   #
   correto=$(grep -w $RESPOSTA $REGISTRO)
   #
   #
   if [ -z $correto ]
   then
      clear
      echo "Usuário[a] $RESPOSTA não existe" >&2
      echo "ou já foi removido[a] do sistema." >&2
      echo "Abortando o script..."
      exit 1
   else
      clear
      echo -e "Foi encontrado o seguinte registro em $REGISTRO:\n"
      echo -e "${correto}\n"
      echo -n "Confirma que o nome está correto? [s\n]: "
      read confirma
      #
      #
      case $confirma in
      s|S|sim|SIM|Sim|sIm|SIm|sIM)
      find_process
      ;;
      *)
      echo "Abortando o script..."
      exit
      ;;
      esac
   fi
}
#
#
function pega_resposta {
   #
   #
   local count=0
   #
   #
   clear
   while [ -z $RESPOSTA ]
   do
     count=$(($count + 1))
      #
      #
      case $count in
      2)
         echo
         echo "Por favor responda..."
         echo
         ;;
      3)
         echo
         echo "Mais uma tentativa."
         echo "Responda á pergunta..."
         echo
         ;;
      4)
         echo
         echo "Uma vez que se recusa a responder"
         echo "irei abortar o script."
         echo
         exit
         ;;
      esac
      #
      #
      echo "Digite o nome do usuário[a]"
      echo -n "que deseja remover do sistema: "
      read -t 60 RESPOSTA
   done
   #
   #
   if [ -n $RESPOSTA ]
   then
      correct_account
   fi
}
#
#
# ------------------------------------------------------------- #
#
#
# Principal
#
#
if [ $UID -ne 0 ]
then
   echo "${0##*/}: tem que ser root para rodar o script" >&2
   exit 1
fi
#
#
pega_resposta
#
#
echo -e "Criando relatório de arquivos pertencentes a ${correto%%:*}\n"
#
#
echo "É recomendado fazer backup/arquivamento"
echo -e "e de seguida fazer uma de duas coisas:\n"
echo "  1) apagar os arquivos"
echo -e "  2) mudar a propriedade dos arquivos para uma conta atual\n"
#
#
Report_Date=$(date +%d%m%y)
Report_File="${correto%%:*}_arquivos_${Report_Date}"
#
#
echo "Aguarde enqunto procuramos"
echo "por arquivos pertencentes"
echo -e "ao usuário[a]....\n"
#
#
find / -user "${correto%%:*}" > $Report_File 2> /dev/null
#
#
echo "Relatorio completo."
echo "Nome do relatório:    $Report_File"
echo -e "Local do relatório:   $PWD\n\n"
#
#
userdel "${correto%%:*}"
#
#
echo "Conta de usuário[a], ${correto%%:*}, foi removida."
#
#
exit

Scripts recomendados

Mostrar dados do PC

xadsl-setup

apt-fast melhorado e empacotado

Echoc (Comando echo, mas com cores)

dm


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts