shell_exec não pode criar um arquivo

2

Estou usando o nginx webserver e estou escrevendo um script que inclui a criação de arquivos, mas o www-data não é capaz de criar o arquivo, mesmo que eu dê permissão na lista de sudoers.

Dentro do meu arquivo sudoers:

www-data ALL=(ALL) NOPASSWD: /usr/bin/php, /usr/bin/python

Eu até tentei dar permissão a TODOS, mas ainda assim não consigo criar o arquivo via navegador.

www-data ALL=(ALL) NOPASSWD: ALL

Meu script simples só quer criar um arquivo e funciona via terminal, mas não no navegador.

<?php
$data = "test";
shell_exec("sudo /bin/echo $data > /var/www/api/v3/monitoring/iam/temp");
    
por Mboy 03.12.2015 / 07:32

1 resposta

3

Se você digitar sudo echo $data >file , seu shell primeiro abrirá o arquivo de saída como usuário normal e, em seguida, executará sudo echo com a saída conectada ao arquivo já aberto. Portanto, o comando echo é executado como root, mas file é aberto como usuário normal.

Você precisa de uma construção como sudo sh -c 'echo $data >file' .

Talvez seja mais fácil conceder permissão de gravação ao usuário para o diretório fornecido usando chmod .

    
por 03.12.2015 / 07:39

Tags