
Tengo una utilidad PHP que acepta solicitudes de publicación con un archivo como parámetro. Ahora, cuando se reciba esa solicitud, quiero ejecutarla como usuario root. Por ejemplo, cuando el usuario accede a www.mydomain.com/sendtextfiletoftp.php desde cartero o cualquier otra herramienta, debe ejecutarse como usuario root.
Me cansé de sudo visudo
agregar las siguientes líneas al archivo sudoers, pero aún así la solicitud se ejecuta con el usuario de Apache
www-data ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php
apache ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php
El mismo archivo cuando se ejecuta como usuario sudo desde la línea de comando ( sudo php72 /path/to/file/sendtextfiletoftp.php
) funciona bien.
Gracias por la ayuda.
Respuesta1
Además de permitir que el usuario de Apache se convierta en root para un comando, debe realizar una llamada dentro de su código que incluya 'sudo'. Típicamente:
En visudo pondría algo como
Apache ALL=NOPASSWD: /ruta/mi_comando_raíz
En mi código /var/www/html/sendtextfiletoftp.php, para la parte específica que necesita acceso root, pondría algo como:
exec("sudo /ruta/mi_comando_raíz");