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 visudo
e 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.
Respostas:
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");
fonte