Page 1 sur 2
Execution commande
Publié : ven. 27 mars 2009 16:29
par gizmo78
Bonjour à vous,
depuis une heure j'essaye de faire exécuter une commande par le biais d'une page web sur un serveur debian 5.0 mais sans résultat.
vu que c'est par une page web j'ai installer sudo et ajouté www-data dans le fichier sudoers:
www-data ALL=(ALL) ALL
mais pas mieux.
voila la commande que je voudrais lui faire exécuter :
echo shell_exec("sudo pidof ./codwaw_lnxded-bin")
une idée? car la je pige pas le truc
Execution commande
Publié : ven. 27 mars 2009 17:30
par fighting_falcon
comment es-tu sur que ta commande ne fonctionne pas ?
peut être que tu n'es pas dans le bon dossier, et du coup le "./" ne correspond pas à ce que tu voudrais ... => pidof renvoie 1 et n'affiche rien
sinon, en vrac :
* PHP est-il en safe mode ? Si oui, ça peut jouer et interdire l'utilisation de la fonction shell_exec
* Plus simplement, la fonction shell_exec est-elle autorisée dans ton php.ini ?
* La partition contenant le script PHP que tu exécutes est-elle en noexec ? Si oui, bah c'est tout bête, c'est à cause de ça ...
Execution commande
Publié : ven. 27 mars 2009 17:42
par gizmo78
alors:
- le ./ faire référence au nom dans les processus
- le php fonctionne bien car la page s'exécute juste les script, après je sais pas comment faire
- je ne trouve pas shell_exec dans le php.ini
- la partition qui contiens les script est en R-X donx exécutable
Execution commande
Publié : ven. 27 mars 2009 18:03
par poulpito
commence par faire un
echo exec("whoami") (et non pas shell_exec)
et regarde si ca marche
Execution commande
Publié : ven. 27 mars 2009 18:13
par gizmo78
ca fonctionne d'abord
et ca retourne bien www-data donc l'utilisateur est bon
Execution commande
Publié : ven. 27 mars 2009 23:59
par Ryu_wm
dans la liste des sudoers rajouter apache ?
Execution commande
Publié : sam. 28 mars 2009 13:32
par Zedoune
l'utilisateur je pense que c'est httpd et non apache, enfin après ça dépend du système

Execution commande
Publié : sam. 28 mars 2009 16:18
par poulpito
non le user c'est bien www-data
www-data ALL= NOPASSWD: ALL
il me semble que c'est comme ca sinon il te demande le mdp du sudo

Execution commande
Publié : sam. 28 mars 2009 19:00
par Alucardfh
je fait la même chose avec un serveur cod4, sauf que je le lance en même temps, voila la commande que j'utilise :
$pid=exec("/chemin/absolu/vers/lnxded-bin > /dev/null & echo \$!"); (
http://fr.php.net/manual/fr/function.exec.php)
perso j'ai pas besoin de l'exécuter en tant que root, donc ça passe sans que apache soit dans les sudoers.
Sinon il suffit de déclarer un alias dans les sudoers :
# Cmnd alias specification
Cmnd_Alias LANCERSERV = /chemin/abs/vers/command
# User privilege specification
www-data ALL= NOPASSWD: LANCERSERV
c'est quand même plus propre que d'autoriser apache à exécuter n'importe quoi en tant que root ...
Execution commande
Publié : sam. 28 mars 2009 20:32
par poulpito
bof la sécurité c'est pour ceux qui ont peur
ein mon gizmo on tatane nous
Execution commande
Publié : sam. 28 mars 2009 20:58
par gizmo78
ouais s'enfou, on est des warriors nous !!!
ps: ca fonctionne

pour le pid mais pas pour démarrer/arrêter :/
Execution commande
Publié : dim. 29 mars 2009 04:33
par syno
Houais les Warriors !! sans filets !!!
Faudra pas oublier de nous donner l'URL des machines en prod hein !

Je devrais me faire des copains russes après
Execution commande
Publié : dim. 29 mars 2009 12:40
par poulpito
d'ou ce que je disias tu es obligé de faire un alias pour chaque commande que tu veux lancer
Execution commande
Publié : dim. 29 mars 2009 13:03
par gizmo78
un alias?
comme ce que dit Alucardfh ?
car ca on la jamais fait avant oO
Execution commande
Publié : dim. 29 mars 2009 13:05
par poulpito
ah je pensais que tu avais testé cette méthode la

pour le démarrer arreter je sais pas un soucis de script (droits d'execution, chemin, etc etc si le pid marche le reste doit marcher )
Execution commande
Publié : dim. 29 mars 2009 13:08
par gizmo78
bas la truc c'est que j'ai fais tous les scripts de la même façon:
#!/bin/sh
cd /le/repertoire
./script_commande
ou
screen -dmS le_nom ./la_commande
mais y en a que un qui fonctionne les autres me disent : répertoire in trouvable alors que si je copie le cd il va bien dans le bon répertoire oO ca je pige pas
Execution commande
Publié : dim. 29 mars 2009 18:00
par Alucardfh
utilise les chemins absolu , sinon apache cherche la commande dans les rep standard qu'il a le droit d'utiliser.
Execution commande
Publié : dim. 29 mars 2009 18:15
par gizmo78
d'accord mais pk pas ca fonctionne pour certain mais pas tous?
Execution commande
Publié : dim. 29 mars 2009 18:24
par Alucardfh
Me suis jamais trop posé la question , mais logiquement quand tu exec une commande, il la cherche dans les rep contenue dans $PATH.
Donc si il le rep que tu utilise n'y est pas , tu peux pas appeler la commande par son nom.
Execution commande
Publié : dim. 29 mars 2009 18:50
par poulpito
jpeux plus t'aider sir gizmo je passe par autrechose mainrtenant pour mon panel d'admin (proxmox inside)
Execution commande
Publié : dim. 29 mars 2009 20:16
par gizmo78
okok pas grave merci, je vais voir pour les chemins absolu, y a une commande php nan?
Execution commande
Publié : dim. 29 mars 2009 20:20
par poulpito
celui qui fonctionne serai pas celui qui a le
#!/bin/sh
cd /le/repertoire
./script_commande
pour le screen -dmS il faut que tu rajoute
cd /dossier/dossier_cod4
screen -dmS serveur_cod4_1 ./cod4_xxxxx
Execution commande
Publié : dim. 29 mars 2009 20:28
par gizmo78
ouais le screen fonctionne, juste le truc du je me mets pas dans le rep :/
Execution commande
Publié : lun. 30 mars 2009 08:44
par fighting_falcon
une partition en non-exec ça se regarde avec "mount" pas avec un "ls" (R-X c'est pour un dossier, par une partoche), c'est une option qui se règle dans le fichier /etc/fstab
ta commande tu l'as testée direct avec sudo pour valider ta conf dans le fichier sudoers ??
Execution commande
Publié : lun. 30 mars 2009 10:43
par poulpito
exact comme test tu fais
su www-data
et après tu test ta commande sudo ./machinechose