Tenete a mente che, sebbene io sia abbastanza bravo a codificare clientide javascript, non sono così bravo a gestire PHP serveride. Non aiuta che ci siano pochissime informazioni / tutorial / API su suPHP. Presumo che tu lo usi esattamente come PHP e che magicamente sappia eseguire tutti gli script come proprietario di quello script.
Sto creando un sito web dinamico che consente agli utenti di caricare script ed eseguirli. Al momento questo è limitato a javascript ma voglio anche consentire loro di eseguire script PHP serveride. Poiché l'utente Apache predefinito è www-data
, voglio usare suPHP. La mia idea è di creare uno script intermedio, chiamiamolo load.php
, che accetta come argomento lo script di destinazione dell'utente, chiamiamolo target.php
. load.php
quindi controlla se l'utente possiede target.php
, e se lo fa, lancia target.php
.
Ma allora che cosa deve fermare l'utente all'interno di target.php
che emette un comando come (non sono sicuro che questo esempio sia accurato in quanto non riesco a trovare alcuna documentazione su suPHP).
shell_exec("suphp /home/someOtherUser/test.php");
suPHP ha bisogno della password di un utente per eseguire questi script?
Janne Pikkarainen ha sottolineato che suPHP viene avviato come root, quindi passa al proprietario di un file prima di eseguirlo . Quindi ora ho due domande.
- Se lo script PHP eseguito da suPHP (come proprietario, consente di chiamarlo utente1) a sua volta contiene
shell_exec("php /home/user2/test.php");
, restituirà un errore dal momento che utente1 sta tentando di avviare lo script di user2, altrimenti suPHP eseguirà nuovamente il kick e cambierà da utente1 a utente2. - che cosa impedisce all'utente1 di eseguire codice javascript / HTML come
<form action="/home/user2/test.php" method="get">
?