PHP shell_exec () y sudo: debe ser raíz setuid

Tengo un shell_exec() que accede a un directorio sobre mi raíz de documento, así que necesito usar sudo “como raíz” para hacerlo realidad. (Entiendo los problemas de seguridad y estoy poniendo en medidas para abordarlo).

El problema es cuando ejecuto el shell_exec() Obtengo un error “sudo: must setuid root” en mi archivo apache error_log.

Pensé que la solución era chmod 4750, el script bash que es llamado por mi sheel_exec() pero eso no hace el trabajo.

¿Qué es exactamente “sudo: must setuid root” tratando de decirme y cómo podría resolverlo?

¿El ejecutable sudo sí mismo es raíz de setuid? Es posible que necesite

 chown root: /usr/bin/sudo chmod u+s /usr/bin/sudo 

Alternativamente, omita sudo completo. Si su script es propiedad de root y tiene su propio setuid bit, entonces no necesita usar sudo para obtener privilegios de root. De hecho, puede ser más seguro de esa manera; usted garantiza que su usuario web solo puede usar esa secuencia de comandos, sin tener que editar sudoers. Para hacerlo, elimine sudo de su línea shell_exec() :

  

¿Revisaste los permisos para tu script?

¿Quién es el dueño del guión?

¿El usuario de la web tiene derecho a sudo?

Para solucionar este problema, necesita chown y chmod sudo file como root como se muestra a continuación.

 chown root:root /usr/bin/sudo chmod 4111 /usr/bin/sudo chmod 0440 /etc/sudoers