Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

Script Completo - Usuários com Acesso no Banco mais Sem Acesso no Sistema Operacional

Abaixo esta o script que foi usado - foi usado o dbschema e alguns comandos de manipulação de arquivos do linux;
#!/bin/bash

# ==========================================================================================================
# Autor: Claudemar Martins
# Funcao: Pesquisa no banco de dados Informix os usuarios com acesso de CONNECT e compara com os usuarios 
#         cadastrados no sistema operacional - o final desta comparacao vai gerar dois arquivo:
#
# (*) As permissoes do banco dos usuarios que nao estao cadastrados no S.O;
# (*) O outro arquivo com os comandos de REVOKE dessas permissoes do banco.
#
# Este script criei para fazer uma faxina dos usuarios nos bancos Informix;
#
# Criado: 09/06/2014 
# ==========================================================================================================

LOG1="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_1.log"
LOG2="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_2.log"
LOG3="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_3.log"
LOG4="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_4.log"
LOG5="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_5.log"
LOG6="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_6.log"
LOG7="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_7.log"
LOG8="usuarios_com_acesso_no_banco_1234_pode_deletar_1234_8.log"

DATA_ATUAL=`date  +%d_%m_%Y_%T`;

REVOKE_LOG="REVOKE_$DATA_ATUAL.sql"
GRANTS_LOG="GRANTS_$DATA_ATUAL.sql"

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
echo
echo -n "Digite o NOME DO BANCO DE DADOS ..........:  "
read DATABASE

# ==========================================================================================================
# Vamos pegar quem tem a permissao de CONNECT no banco
# ==========================================================================================================

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
echo
echo "                    +---------------------------------------------------------+"
echo "                    |                                                         |"
echo "                    |                 aguarde alguns segundos ...             |"
echo "                    |                                                         |"
echo "                    +---------------------------------------------------------+"

dbschema -d $DATABASE -p all | grep -E ' connect to ' > $LOG1 

# ==========================================================================================================
# Gravando um arquivo com - FINGER USERNAME - para a gente saber quem esta cadastrado no SO
# ==========================================================================================================

cat $LOG1 | awk '{print "finger " $4 " " }' > $LOG2 

# ==========================================================================================================
# Listando os usuarios que nao estao cadastrados no sistema operacional 
# ==========================================================================================================

chmod 755 $LOG2
./$LOG2 >/dev/null 2> $LOG3     # jogo a saida STDOUT para a /dev/null e a STDERR em arquivo


# ==========================================================================================================
# Filtrando - vamos tirar o : do usuario
# ==========================================================================================================

cat $LOG3 | awk '{print $2}' > $LOG4

sed -i 's/://' $LOG4

# ==========================================================================================================
# Agora vamos ligar todas as permissoes dos usuarios nas tabelas 
# ==========================================================================================================
# cat $LOG4 | awk '{print ("dbschema -d '$DATABASE' -p " $1 " | grep connect | grep grant \n" )}' > $LOG5   

cat $LOG4 | awk '{print ("dbschema -d '$DATABASE' -p " $1 " \n" )}' > $LOG5   

chmod 755 $LOG5
./$LOG5 > $LOG6

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                     Database $DATABASE"
echo
echo
echo "     +---------------------------------------------------------------------------------------+"
echo "     |                                                                                       |"
echo "     |   Usuarios com acesso no banco mais sem usuario cadatrado no Sistema Operacional.     |"
echo "     |                                                                                       |"
echo "     +---------------------------------------------------------------------------------------+"
echo ""
echo "                    +---------------------------------------------------------+"
echo "                    |                                                         |"
echo "                    | Arquivo do GRANTS  - $GRANTS_LOG     |"
echo "                    |                                                         |"
echo "                    | Arquivo do REVOKES - $REVOKE_LOG     |"
echo "                    |                                                         |"
echo "                    +---------------------------------------------------------+"
echo

# ==========================================================================================================
# Backup das permissoes antes de retirar os acessos
# Quero somente os 'CONNECT|GRANT' nao quero que me traga nada 'PUBLIC' 
# ==========================================================================================================

cat $LOG6 | grep -E 'connect|grant' | grep -v 'public' > $LOG7

cp $LOG7 $GRANTS_LOG

# ==========================================================================================================
# Mostra os comandos para retirar acessos dos usuarios - este vai ser o comando REVOKE
# ==========================================================================================================

sed -i 's/grant/revoke/' $LOG7
# sed -i 's/grant update on /revoke update on /' $LOG7
# sed -i 's/grant insert on /revoke insert on /' $LOG7
# sed -i 's/grant delete on /revoke delete on /' $LOG7
# sed -i 's/grant select on /revoke select on /' $LOG7
# sed -i 's/grant update on /revoke update on /' $LOG7
# sed -i 's/grant index on /revoke index on /' $LOG1
sed -i 's/ to / from /' $LOG7

cp $LOG7 $REVOKE_LOG

rm $LOG1
rm $LOG2
rm $LOG3
rm $LOG4
rm $LOG5
rm $LOG6
rm $LOG7

echo

0 comentários:

Enviar um comentário