Utilisation de la fonction exec en PHP

Laurent vient de publier une page sur son wiki dédié à l’utilisation de la fonction PHP exec pour lancer des commandes systèmes…

Je voudrais juste apporter quelques petites astuces que j’utilise régulièrement…

Premièrement, bien souvent, on a besoin d’exécuter des commandes en root… Par exemple, pour modifier un fichier de configuration et redémarrer un service…

Pour cela, on peut utiliser la commande sudo.
Sudo permet de contrôler de manière fine l’exécution de programmes en mode root. En temps normal, sudo demande a l’utilisateur d’entrer son mot de passe pour pouvoir exécuter la commande en root. Mais l’on peut définir que certaines commandes n’aient pas besoin de mot de passe, via l’edition du fichier de conf de sudo :

Ou l’ont ajoute :

Cela permet à l’utilisateur httpd (apache) d’exécuter le script en tant que root sans avoir besoin de rentrer un mot de passe.

Maintenant, quand on fait ça, il faut faire attention à la sécurité…
Il ne faut pas par exemple donner a apache l’accès direct à /bin/passwd, car si une application web est corrompu, l’attaquant pourra changer tous les mots de passe sans aucune restriction…
Pour éviter cela, je préfère encapsuler le programme dans un script shell qui se chargera de vérifier les paramètre fournit par le script php…


Avec changepasswd.sh :


Bon, ce n’est qu’un exemple torché en 5 minutes pour l’occasion, je n’ai pas testé ces scripts en particulier, mais j’ai déjà utiliser pas mal de fois cette technique… Mais Mais, bon, je pense que ça pourrait en aider certains…

(3 commentaires)

  1. Merci c’est utils mais j’ai pas encore testé

    • hokutonoken76 on 22 avril 2009 at 09:54
    • Répondre

    j’ai essayé de faire un exec avec ta méthode, ca ne marche pas!

  2. Il va falloir donner un peu plus de détails si tu veux que je t’aide !

Laisser un commentaire

Votre adresse ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.