Execute um comando SSH com o usuário www-data do Apache2

1

Estou trabalhando em um projeto de máquina virtual onde uso dois servidores, vamos chamá-los de servidor A e servidor B, ambos com o Ubuntu 14.04 LTS instalado.

O servidor A executa o servidor da Web Apache2 com um site em que os usuários podem solicitar Virtual Private Servers. Uma vez concluído o processo de pedido do usuário, o usuário clica em um botão que instancia o seguinte comando com a função exec () do PHP.

ssh -p 22 [email protected] fallocate -l 2048M /home/john/images/guest.img 2>&1

Isso deve criar uma imagem no servidor B, onde o servidor Virtual Private do usuário é criado. Executar o comando anterior com o usuário john funciona perfeitamente, mas como o comando é executado via PHP, o www-data é o usuário que o executa.

Como esperado, recebo os seguintes erros:

array(3) {
  [0]=>
  string(36) "Permission denied, please try again."
  [1]=>
  string(36) "Permission denied, please try again."
  [2]=>
  string(39) "Permission denied (publickey,password)."
}

Eu sei sobre os riscos de segurança de dar a este usuário direitos de sudo para se tornar um usuário diferente e executar o comando como "john". Então, a minha pergunta é: existe alguma outra maneira de fazer essa operação sem modificar as permissões do www-data? Acredito que o SSH é a única maneira de criar algo em um servidor remoto ou estou errado?

Eu não vou executar o site no servidor B para criar essas imagens localmente, isso não é o que eu quero.

Este script respondido por este usuário vale a pena tentar? link

    
por Beeelze 02.02.2016 / 10:50

1 resposta

0

Você deve fazer o dono de www-data de / home / john / images, ou adicioná-lo ao grupo john enquanto dá direitos de gravação, ou chmod dessa pasta para 777.

Tente isto:

chmod 777 /home/john/images/

Em seguida, você concede a todos os direitos para essa pasta, incluindo www-data.

Isso pode ser demais, por isso, se isso funcionar, você pode limitar os direitos. Você pode adicionar www-data ao grupo john:

groups www-data
groups john
usermod -aG john www-data

Primeiro você vê para quais grupos www-data e john pertencem. Então você adiciona www-data ao john-group.

Agora você tem que limitar os direitos a essa pasta:

chmod 775 /home/john/images/
ls -al /home/john/images/

Agora, o usuário 'john' e todos os membros do grupo 'john' têm privilégios de gravação.

    
por 02.02.2016 / 12:02