working shell_exec not example ejemplos ejecutar desde php bash sudo shellexecute

shell_exec - ¿Cómo llamar al script de shell desde php que requiere SUDO?



php shell_exec example (3)

Edite el archivo sudoers (con visudo ) y agregue una regla que permita al usuario del servidor web ejecutar el comando sin una contraseña. Por ejemplo:

www-data ALL=NOPASSWD: /path/to/script

Tengo un archivo que es un script bash que requiere que SUDO funcione.

Puedo ejecutarlo desde la línea de comando usando SUDO, pero se me pedirá que ingrese la contraseña de SUDO.

Quiero ejecutar este script desde php a través de shell_exec pero si llamo a SUDO, no es como una línea de comando donde se me puede pedir la contraseña. ¿Hay alguna manera de pasar la contraseña para sudo con la llamada sudo?

¿Cómo puedo hacer esto?


Hay varias soluciones para este problema.

  • En primer lugar, considere cambiar los permisos del script, si el motivo por el que desea sudo es simplemente un problema de permiso (consulte el comentario que agregué a la pregunta anterior).

  • Otro enfoque sería usar el en.wikipedia.org/wiki/Setuid . [Editar: parece que setuid no funciona bien con las secuencias de comandos. Para explicaciones, vea este enlace .]

  • Un tercer método, pero muy inseguro, es leer la contraseña de un archivo de contraseña. Advertencia: esto es muy inseguro, si hay otra posibilidad, no lo hagas. Y si lo hace, intente ocultar el archivo de contraseña en algún lugar de la jerarquía de su carpeta.

    <?php shell_exec(''sudo -u root -S bash script.sh < /home/[user]/passwordfile''); ?>

  • Y una cuarta posibilidad es usar la etiqueta NOPASSWD en el archivo sudoers. Debe limitar este poder a los comandos específicos que necesita.


Puede agregar algo como esto a su archivo sudoers :

username ALL=NOPASSWD: /path/to/script

Esto permitirá que ese usuario particular sudo en ese script en particular sin que se le solicite una contraseña.