Le sam 30/08/2003 à 12:18, François Boisson a écrit :

> Bonjour
> 
Bonjour,

> 
> > $ENV{'PATH'} = '/bin:/usr/bin:/sbin';
> 
> puet être le /sbin dans le PATH (je n'y crois pas, cf plutôt plus bas)
> 

je viens de le retirer, il servait a rien de toute les facons, parce que
j'avais 

my $iptables = '/sbin/iptables';

ayant vu sur internet que cela pouvais etre source d'insecure dependency
...

> > 
> > system($iptables." -t nat -A PREROUTING -i ppp+ -p tcp -d ".$ip."
> > --dport 4661 -j DNAT --to 192.168.1.1:4661");
> 
> Pour exécuter une commande système dans un script suid root, il est
> préférable de séparer le camooande des arguments, en clair essayes system
> $iptables, "-t nat -A PREROUTING -i ppp+ -p tcp -d ".$ip. --dport 4661 -j
> DNAT --to 192.168.1.1:4661"
> 

Deja un bon point, je viens de comprendre quelque chose :
la virgule sert a séparer la commande des arguments, je ne comprenais
pas pourquoi il y avait une virgule sur les documents sur le net, je
pensais a la concaténation, mais pourquoi pas un . ?
j'ai donc séparé la commande de ses arguments a l'aide de la virgule.
Cependant il a l'air de prendre en compte toute la fin de la chaine
comme un seul caractere, ce qui ne plait pas a iptables qui m'injurie
... 
Dois-je placer des virgules entre chaque argument ?? c'est un peu lourd
... 
D'autant plus que 

system($iptables." -P FORWARD DROP");

fonctionne sans pb avec le . par exemple

Je pense donc bien qu'il s'agit de la variable $ip qui met le bordel ...
en plus quand je la remplace par sa valeur a la main, il n'y a pas de pb

> (tiens Edonkey!)

gagné ;-)

> 
> Ca devrait mieux marcher.
> Le mieux est de préciser le chemin complet de la commande dans $iptables.
> 
> En espérant que ça marche
> 

eh non sniff ...

merci pour ton aide !

-- 
Grégoire CACHET
http://www.audacy.fr

Répondre à