Em todas as turmas que dou aula de DBA, sempre me fazem a mesma pergunta: Como faço para esconder as senhas que coloco em meus scripts? E, a maioria tem a ver com automatização de backup efetuada através do mysqldump. Existem algumas formas de fazer isso. A mais fácil é utilizar o SHC.

O SHC foi criado por Francisco Javier Rosales García da Faculdad de Informática da Universidad Politécnica de Madrid. O objetivo do SHC se traduz em:

– Proteger scripts shell
– Criptografar scripts shell
– Esconder senhas importantes que são passadas em linha de comando para automatização de tarefas
– Impedir que algum Zé Ruela mude um script funcional e o transforme em algo que vai lhe custar a cabeça 🙂

Basicamente, puxando a sardinha para o nosso lado “bancal” de dados de ser, imagine que voce precisa deixar no crontab um script de backup através do mysqldump. Como esconder a senha? Qualquer um pode editar seu script de backup, ver a senha (que neste caso é de menos), e, até mudar seu script de backup.

Para evitar isso, pode-se usar o SHC para “compilar” seu script e torná-lo um executável indecifrável. Na verdade o que o SHC faz é transformar seu script shell em um código fonte C, e, então compilar este código fonte C gerando um executável, um binário.

Antes de mais nada, obviamente, recomenda-se que guarde uma backup de seu script compilado, pois, ele é irreversível. Se perder seu script e precisar mudá-lo no futuro não poderá contar com o binário gerado pelo SHC.

Para rodar o SHC, deve-se ter instalado: gcc e libc6-dev.

Instalando o SHC

[root@teste_server local]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.6.tgz
[root@teste_server local]# tar -xzf shc-3.8.6.tgz
[root@teste_server local]# cd shc-3.8.6
[root@teste_server local]# sudo make install

 

Crie um banco de dados e um usuário para teste em seu servidor MySQL

mysql> create database teste;

mysql> grant all on teste.* to teste@localhost identified by ‘123’;

Agora, criamos um script de backup usando o editor de sua preferência

[root@teste_server local]# vi meu_script_de_backup

#!/bin/bash
mysqldump -uteste -p123 teste > bkp.sql

Compilando o script

[root@teste_server local]# shc -r -v -T -f  meu_script_de_backup

* Note que no seu diretório foram criados 2 arquivos: meu_script_de_backup.x e meu_script_de_backup.x.c. O primeiro é o binário executável que você poderá usar a vontade, despreocupado! O segundo é o código fonte C gerado pelo programa, que pode ser descartado.