Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/10/2007, à 22:39

gillouz

[Resolu] redemarrer un service avec un script php

salut à vous

J'ai écrit un portail web en PHP Mysql et apache. Sur la même machine j'ai configuré un proxy et je souhaite controler le proxy depuis le portail web.

Ceci pour éviter de devoir me loguer sur la machine en ssh et pouvoir déléguer cette tache à une personne sans connaissance informatique.

j'ai déjà écrit le code qui permet de charger les fichiers squidGuard.conf et domains dans une page web et de les modifier MAIS pour que cette configuration soit activée dans le proxy il faut le redemarrer.

Je le fait habituellement avec : $ sudo /etc/init.d/squid restart

mais le serveur web tourne avec l'utilsateur www-data qui ne peut pas faire de sudo.

je pense a ajouter le groupe proxy a l'utilisateur www-data. Que pensez vous de cette solution, en avez vous de meilleure?

Merci à vous

Dernière modification par gillouz (Le 06/11/2007, à 22:31)

Hors ligne

#2 Le 01/11/2007, à 02:02

yurek

Re : [Resolu] redemarrer un service avec un script php

ta penser au cron?


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#3 Le 01/11/2007, à 02:50

Zapan

Re : [Resolu] redemarrer un service avec un script php

Ou tout simplement faire un script ( en tant que root ) qui lance le redémarrage et activer le bit suid de ce dernier ?

Le bit suid permet à quelqu'un qui a les droits d' exécution sur un fichier de l'exécuter comme si il était le propriétaire du fichier.

Par exemple,  pour redémarrer/éteindre le pc en mode graphique on fait appel au bit suid, pour que l'utilisateur lambda puisse faire une action que normalement seul le root peut faire.

Dernière modification par Zapan (Le 01/11/2007, à 02:54)

Hors ligne

#4 Le 01/11/2007, à 14:24

gillouz

Re : [Resolu] redemarrer un service avec un script php

Cron c'est une très bonne idée je pourrais faire redémarrer squid tous les soirs mais les modifications ne seraient pas immédiates... à méditer

Pour ce qui est du script, le script /etc/init.d/squid exist déjà et il reste impossible de faire executer au serveur web un commande sudo. Je pourrais ajouter www-data au groupe des sudoers mais cela impliquerait que le script php lance une commande du type : $ sudo --password toto /etc/init.d/squid restart et donc d'avoir le mot de passe d'un sudoer en clair dans un script avec tout les risque de sécurité que cela comporte.

Autre chose??

Hors ligne

#5 Le 01/11/2007, à 19:17

Zapan

Re : [Resolu] redemarrer un service avec un script php

Le bit suid ? hmm

Hors ligne

#6 Le 01/11/2007, à 23:18

gillouz

Re : [Resolu] redemarrer un service avec un script php

euh... j'aime bien avoir l'air de tout savoir mais c'est quoi exactement le bit suid c'est pour permettre à un sudoer de pouvoir executer un script non??

Hors ligne

#7 Le 01/11/2007, à 23:19

Zapan

Re : [Resolu] redemarrer un service avec un script php

linuxfrance a écrit :

[Unix] Bit Set User ID. Bit faisant partie des droits d'un SGF unixien, indiquant qu'un exécutable doit être lancé avec les droits de son propriétaire, même s'il est lancé par quelqu'un d'autre (par conséquent, il faut faire très attention avec les fichiers détenus par l'utilisateur root).

Donc suffit que ton script appartienne au root et que l'utilisateur www-data ai les droits d'exécutions dessus pour qu'il soit lancé comme si c'était le root lui même qui le lançait.

Dernière modification par Zapan (Le 01/11/2007, à 23:23)

Hors ligne

#8 Le 03/11/2007, à 22:00

gillouz

Re : [Resolu] redemarrer un service avec un script php

ok donc en activant le bit suid du scipt /etc/init.d/squid

"sudo /etc/inid.d/squid restart" devient égal à "/etc/init.d/squid restart"

c'est bien ca? par ce que j'ai essayé et il squid me fait toujours des messages d'erreur a cause des droits.... j'ai raté quelque chose?

Hors ligne

#9 Le 06/11/2007, à 22:31

gillouz

Re : [Resolu] redemarrer un service avec un script php

j'ai resolu mon problème avec le bit suid

ATTENTION! ce bit ne marche que avec les programmes compilés

il faut donc écrire un programme en C qui lance la commande désirée ce programme doit appartenir à root et avoir le bit suid activé.

#include <stdio.h>

int main(void)
{
system("/etc/squid restart");
return 0;
}

ce programme doit être compilé avec

$ gcc -o squidrestart <nom_du_fichier>

il faut placer "squidrestart" là ou sont les pages web.

<?php

sytem("./squidrestart");

?>

voila voila! ca a marché pour moi.

Hors ligne