
Eu tenho um utilitário PHP que aceita solicitação de postagem com arquivo como parâmetro. Agora, quando essa solicitação for recebida, quero executá-la como usuário root. Por exemplo, quando o usuário acessa www.mydomain.com/sendtextfiletoftp.php do carteiro ou qualquer outra ferramenta, ele deve ser executado como usuário root.
Cansei de sudo visudo
adicionar as 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.
Responder1
Além de permitir que o usuário do Apache se torne root para um comando, você precisa fazer uma chamada dentro do seu código que inclui 'sudo'. Tipicamente:
No visudo eu colocaria algo como
apache ALL=NOPASSWD: /caminho/meu_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");