Tenga en cuenta que, aunque soy bastante bueno en la codificación de Javascript del lado del cliente, no soy tan bueno al tratar con PHP del lado del servidor. No ayuda que haya muy poca información / tutoriales / API en suPHP. Supongo que lo usas exactamente como PHP y mágicamente sabe cómo ejecutar todos los scripts como el propietario de ese script.
Estoy creando un sitio web dinámico que permite a los usuarios cargar scripts y ejecutarlos. En este momento, esto está limitado a JavaScript, pero también quiero permitirles que ejecuten scripts PHP en el servidor. Como el usuario predeterminado de Apache es www-data
, quiero usar suPHP. Mi idea es crear un script intermedio, llamémoslo load.php
, que toma como argumento el script objetivo del usuario, llamémoslo target.php
. load.php
luego verifica si el usuario posee target.php
, y si lo hacen, lanza target.php
.
Pero luego, ¿qué es lo que detiene al usuario dentro de target.php
emitiendo un comando similar? (No estoy seguro de que este ejemplo sea correcto ya que no puedo encontrar ninguna documentación en suPHP).
shell_exec("suphp /home/someOtherUser/test.php");
¿SuPHP necesita una contraseña de usuario para ejecutar estos scripts?
Janne Pikkarainen señaló que suPHP comienza como root y luego cambia al propietario de un archivo antes de ejecutarlo . Así que ahora tengo dos preguntas.
- Si el script PHP ejecutado por suPHP (como propietario, llamémosle usuario1) a su vez contiene
shell_exec("php /home/user2/test.php");
, ¿devolverá un error ya que el usuario1 está intentando iniciar el script del usuario2, o suPHP se activará nuevamente y cambiará de user1 a user2. - ¿Qué es lo que impide que user1 ejecute código javascript / HTML como
<form action="/home/user2/test.php" method="get">
?