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: 1.501 ]

Homepage: https://github.com/PedroF37

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

Montando imagens ISO

Cadastra filmes

Script para sincronizar dados entre desktop e notebook de maneira 99% automática usando rsync

OpenOffice Modo Texto

Implementando a famosa hélice ASCII


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts