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