(Courriels de diversion: <tressaillement@debitiez-trotteront.com> <regrettable@barge-chasseur.com> <enfermerais@memoriseras-biffons.com> <cavalieres@calculee-enjoindrons.com> <fluctuaient@remediee-pelerai.com> <amorcable@meditaient-precautionnerez.com> <isobares@drainent-apres-guerre.com> <demolies@fignoles-objectait.com> <joins@accapares-chinee.com> <collectivisiez@interposerait-constaterait.com> )
> Salut!
Salut a tous,
je suis un nouvel arrivant qui espere apporter sa toute petite
contribution sur toulouse ;-)
Je suis tombé sur cette question, peut etre je pourrai apporter un
elementde solution:
>
> J'ai trouve deux methodes (a noter que je ne les ai pas teste):
>
> * La methode bourin:
> Editer le fichier "httpd.conf" de apache et definir aux variables "user"
> et "group" la valeur "root" (au lieu de "nobody" par default).
> Les commandes seront executees directement en tant que "root", mais
> la c'est plutot dangereux O_O
>
> * La methode light:
> Donner la permission a "nobody" (ou l'autre nom d'utilisateur specifie
> dans "httpd.conf") de faire un "sudo".
> Il n'y a qu'a faire un "exec("sudo macommande");" et ca devrait aller.
Ces méthodes fonctionnent, mais il faut faire attention au cas ou on met
des variables dans la commande exec(), porte ouverte au "cross-site
scripting". Donc la méthode requiert de faire hypra attention aux
erreurs de scripts php, avec les verifications qui vont avec du genre
utiliser les $HTTP_VARS si on fait du post via un formulaire, interdire
les caractères spéciaux ... (si on ne met pas de variables dans la
fonction exec() mais juste la commande, le problème est évidemment levé)
Perso, j'aime pas trop donner les droits d'un sudo à un utilisateur qui
n'est pas sensé le faire, genre nobody ou www-data, et, dans le cas ou
on les donne, je ne sais pas dans quel mesure un utilisateur du net
sera empeché de faire ce qu'il veut sur la machine puisqu'il a les
droits du sudo...
Bref, la solution trouvée est de passer par un script CGI codé en bash,
(ou autre, mais c'est pour reprendre la logique de la question !!). Le
script prend les droits de l'utilisateur auquel il appartiend, et c'est
le script qui agit en local sur la machine et non plus directement le
code php.
Ainsi, toutes les sécurités des utilisateurs sont conservées, et c'est
le script qui a des droits et non plus l'utilisateur...
Reste évidemment quand même qu'il ne faut pas mettre n'importe quoi dans
le script ... ;-p
> Voila, A++
@+, j'espere que j'ai pu un peu aider, toute les remarques sont les
bienvenues !
> Choplair *qui s'enfui*
Stéphane *qui arrive*
--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>