CentOS 7 Apache executa / executa solicitação da Web como usuário root

0

Eu tenho um utilitário PHP que aceita pós-solicitação com o arquivo como parâmetro. Agora, quando esse pedido for recebido, desejo executá-lo como usuário root. Por exemplo, quando o usuário acessa www.mydomain.com/sendtextfiletoftp.php no postman ou em qualquer outra ferramenta, ele deve ser executado como usuário root.

Estou cansado sudo visudoe adicionando linhas abaixo ao arquivo sudoers, mas ainda assim a solicitação é executada com o usuário apache

www-data ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php

apache ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php

O mesmo arquivo quando executado como usuário sudo na linha de comando ( sudo php72 /path/to/file/sendtextfiletoftp.php) funciona bem.

Obrigado pela ajuda.

harnish
fonte
O servidor da web não executa realmente esses arquivos; ele as lê e, em seguida, o módulo PHP executa o código dentro.
Ignacio Vazquez-Abrams

Respostas:

0

Além de permitir que o usuário apache se torne root de um comando, você precisa fazer uma chamada dentro do código que inclui 'sudo'. Tipicamente:

No visudo eu colocaria algo como

apache ALL = NOPASSWD: / path / my_root_command

No meu código /var/www/html/sendtextfiletoftp.php, para a parte específica que precisa de acesso root, eu colocaria algo como:

exec ("sudo / path / my_root_command");

El_Tel
fonte
Obrigado EI_Tel, o que é my_root_command? Estou usando shell_exec (), isso fará?
harnish
Pode ser um shell script ou chamada de sistema. Eu não tentei isso, mas eu suponho que poderia ser um pedaço de código php
El_Tel
Eu tenho feito isso, mas não funciona
Harnish
Eu tive uma aparência adequada e isso funciona. Eu escrevi um script shell pouco a cauda / var / log / mesages que precisa de raiz ou sudo acesso
El_Tel
$ cat /usr/local/bin/taillog.sh #! / bin / bash tail / var / log / messages
El_Tel