Exécuter un script shell depuis php
salut j'ai un script shell pour créer des utilisateur :
Code:
1 2
| #! /bin/bash
useradd $1 -g $2 |
je fais ./shell.sh user1 group1 et il est créé
mais depuis mon script php :
Code:
1 2 3
| <?php
exec ('./shell.sh user2 group1');
?> |
je lance la page mais la création de user2 ne passe pas
alors je voudrais savoir s'il me faut un rpm sur mon redhat pour que php exécute les commande shell ?
Et ce qu'il faut donner comme autorisations à l'utilisateur pour que le script soit exécuté ? Et comment ?
Et ce que c'est possible d'écrire le script shell au milieu de la page php sachant que j'ai déjà essayé mais en vain ?
merci à vous.
EXECUTION SHELL à partir de PHP (Apache)
Bonjour,
Je me permets un petit up car je n'y arrive pas :
J'ai écrit un shell (Linux) "creation_compte.sh" qui fonctionne très bien quand je le lance en ligne de commande (en root).
Je voudrais maintenant exécuter ce shell, appelons-le "creation_compte.sh" depuis le panneau de contrôle admin de mon site PHP sous Apache.
Sauf que le serveur me renvoie autant de "operation not permitted" qu'il y a de commandes non autorisées (adduser, chmod et chown) pour le "guest" que constitue le client d'Apache. Donc a priori, c'est normal.
D'après ma compréhension des différents posts, il y aurait 3 options :
1) SOLUTION "EXECUTABLE" :
- Retranscrire le shell "creation_compte.sh" en version exécutable, par exemple en C, appelons la version compilée "creation_compte.exe",
- attribuer les droits 4777 à cet exécutable,
- lancer ce programme depuis php comme spécifié dans l'un des posts de ce thread.
=> J'ai essayé mais sans succès, même avec un simple "hello world".
(essais avec 2 modes de compilation : "GNU GCC" en mode "Release"avec CodeBlocks sous Windows, et compilation -sans erreur retournée- avec la librairie gcc installée sur mon serveur Linux)
2) SOLUTION "SUDO" :
- autoriser le client "guest" d'Apache à exécuter le shell creation_compte.sh" (par "visudo")
=> J'essaye en ce moment même.
3) SOLUTION "WELCOME HACKERS" :
Lancer Apache comme user "root" au lieu de "guest" (par configuration de "httpd.conf" et des vhost éventuels)
=> Je ne le ferai JAMAIS.
De là j'aurai 2 questions de noob, notamment en C/C++ :
- Est-ce que ma description des 3 solutions est correcte ?
- Pour la solution 1 (qui me parait séduisante pour d'autres applis), est-ce qu'il y a des préconisations particulières de compilation du code source C par rapport à la machine qui accueille ensuite l'exécutable [en clair, faiut il compiler impérativement le source sur la machine d'accueil sous Linux via gcc par exemple] - ou peut-être faut il revoir la config Apache ?