Execute o comando sensível (incluindo senhas) no Linux sem expor dados

2

Eu tenho uma conta em um host compartilhado que me permite trabalhar no servidor via SSH. Como tenho alguns problemas ao instalar o Magento usando o instalador da web, mudei para a instalação da linha de comando. O comando para instalar é algo como isto:

php -f install.php -- \
...
--db_host "dbhost" \
--db_name "dbname" \
--db_user "username" \
--db_pass "password" \
...
--admin_username "username" \
--admin_password "password" \
...

Enquanto o comando está em execução (e está sendo executado por alguns minutos), é claro que todos os outros usuários desse servidor podem ver os parâmetros (e senhas) inspecionando os processos em execução (com ps aux , por exemplo). Eu estava imaginando se é possível ocultar esses dados de alguma forma (por exemplo, com algum tipo de scripts / programas de wrappers)?

    
por maff 09.05.2011 / 13:56

2 respostas

5

Não é fácil. Se você escreveu um script wrapper que executou esse comando, esse comando ainda aparecerá em ps .

Se você soubesse PHP suficiente, poderia abrir o install.php , procurar onde ele lida com esses flags e codificar os valores por si mesmo (certificando-se que o script tem 700 perms para que ninguém mais possa lê-lo), então você pode executar o comando sem precisar das bandeiras.

Supondo que o script deles não tente adivinhar como ele está sendo executado e reagir de forma inadequada, você pode fazer algo assim:

<?php
  unset($argv);
  $argv=array("install.php",
     "--db_host","dbhost",
     "--db_name","dbname",
     ...
     "--and_so_on","value"
     );
  include("install.php");
?>

como um novo script (modo 700 novamente) e execute php newinstall.php . $argv é normalmente a matriz de argumentos de comando (começando com o nome do comando), então aqui vocêunset() o existente e criar um novo com todas as opções de linha de comando necessárias, então você include() install.php para fazer o PHP executar aquele script (com a lista $ argv adulterada para fazer o install.php pensar que ele foi executado com essas opções).

    
por 09.05.2011 / 14:42
2

Uma abordagem menos técnica (e eu percebo que não é uma resposta à sua pergunta!), mas em situações como essa, para facilitar, no passado usei detalhes descartáveis e, uma vez instalado, mude-os através do sistema administrativo / gerado arquivos de configuração.

    
por 09.05.2011 / 15:51