Protegendo scripts em shell

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.

2 thoughts on “Protegendo scripts em shell”

  1. Hola Tudo bem estive vendo que o blog ou site esta relacionado intimamente com o MYSQL ferramenta com a cual trabalho a algum tempo, como nao sei onde postar isso resolvi escrever como comentario tenho um problema con meu ERP. em POWER BUILDER com a versao MYSQL 5.5 cualquer uma delas, o que acontece eh o siguiente cuando faso uma chamada desde o ERP em uma tabela no banco de dados nao poso fazer alter table sobre a mesma tabela na cual esta sendo requisitada no ERP alguma ideia pois na versao 5.1.31 nao tenho ese problema y o erro que me diz eh”lock wait time out exceed”

    1. Wilian Hola, ¿cómo estás? Usted puede escribir en español. Me parece que puede ser un problema con el “storage engine” o la configuración 5.5. Por favor, envíenme el resultado de: show create table “tabla con lock”, y show global variables.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.