[APACHE sous LINUX] sudo dans un cgi

Albert Tete -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Bonjour,
Environnement
Linux fedora
Apache

Quand j'exécute la commande "
sudo service network start
" en ligne de commande, ca fonctionne. Mais dès que j'exécute cette commande dans un cgi via la commande
OPER = `sudo service network start`
, suivi de echo "$OPER" mon navigateur ne me retourne rien mais quand j'enlève le sudo, ma commande est de nouveau exécutée.
Merci pour vos idées.

TKX
A voir également:

2 réponses

mamiemando Messages postés 34193 Date d'inscription   Statut Modérateur Dernière intervention   7 892
 
Il ne faut pas plutôt utiliser la commande exec ?
http://www.manuelphp.com/php/function.exec.php

Bonne chance
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

exec PROGRAMME LISTE
La fonction exec() exécute une commande système et ne retourne jamais -- utilisez system() à la place de exec() si vous souhaitez qu'elle retourne. Elle échoue et retourne FAUX si et seulement si la commande n'existe pas et est exécutée directement plutôt que par votre interpréteur de commandes (shell)

system PROGRAMME LISTE

Fait exactement la même chose que exec LISTE sauf qu'un fork est effectué au préalable et que le process parent attend que son fils ait terminé. Remarquez que le traitement des arguments dépend de leur nombre. Si il y a plus d'un argument dans LISTE ou si LISTE est un tableau avec plus d'une valeur, system exécute le programme donné comme premier argument avec comme arguments ceux donnés dans le reste de la liste. Si il n'y a qu'un seul argument dans LISTE et s'il contient des méta-caractères du shell, il est passé en entier au shell de commandes du système pour être interprété (c'est /bin/sh -c sur les plates-formes Unix mais cela peut varier sur les autres). Si il ne contient pas de méta-caractères du shell, il est alors découpé en mots et passé directement à execvp(), ce qui est plus efficace.
0