[APACHE sous LINUX] sudo dans un cgi

Fermé
Albert Tete - 30 mai 2007 à 13:58
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 31 mai 2007 à 11:23
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 33545 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 février 2025 7 829
31 mai 2007 à 10:05
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
31 mai 2007 à 11:23
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