Executando o comando rsync shell do arquivo php no navegador da web

Executando o comando rsync shell do arquivo php no navegador da web

Primeiramente, queremos mover as alterações de um sistema para outro e para isso, temos um script shell em synchfolders.sharquivo como segue

rsync -av --delete -e 'sshpass -p Wordpress@123 ssh -p 22' [email protected]:/var/www/html/prosync/wp-content/plugins/ /var/www/html/devsync/wp-content/plugins >> /var/www/html/devsync/wp-content/mysynclog.txt

e queremos executar este script de shell no arquivo PHP shell_exec()e enquanto executamos este arquivo PHP a partir de um navegador diferente do comando rsync, todos estão em execução, mas o rsyncnão está em execução. Pesquisamos o material no SO e obtivemos o linkhttps://stackoverflow.com/questions/30772816/php-exec-rsync-ssh-to-remote-server-not-working/30773063#30773063, como dito aqui tentamos a execução do arquivo PHP na linha de comando e funciona perfeitamente, mas não através do navegador. Por que, por favor, deixe-nos saber onde cometemos um erro. desde já, obrigado

Responder1

Em geral: em scripts que não são executados a partir do seu shell interativo usual, você precisa garantir queusar caminhos absolutos(ou seja, /usr/bin/rsyncem vez de rsync) ouconfigurar o ambiente corretocom um bom valor para $PATH


Como uma melhoria adicional: em vez da autenticação baseada em senha, você realmente deve configurar a autenticação SSH baseada em chave para uso em scripts.

Quando você para de usar senhas e começa a usar chaves, você pode bloquear e proteger o servidor ssh (desativar a autenticação por senha interromperá ataques de força bruta) e, mais importante, você pode adicionar restrições ao que é permitido quando uma chave específica é usada para autenticação, que é algo que você não pode fazer com uma senha.

Você pode restringir a chave usada em seu script para que ela só possa ser usada para rsync de um host específico.

Então, mesmo que o seu script seja comprometido, não será a sua senha root (que concede controle total ao seu servidor) que será roubada, mas apenas uma chave privada que concede acesso limitado, se é que pode ser usada.

informação relacionada