Forum Programmation.java problem avec iptables

Posté par  .
Étiquettes : aucune
-4
25
mar.
2011

Salut tous le monde , je suis en train de faire un Firewall .
J'ai fait un code qui interpret la commande ls (voila son code aprés).

try{
Runtime runtime = Runtime.getRuntime();
String[] cmd = { "/bin/sh", "-c", "ls>fichier.txt" };
Process p = runtime.exec(cmd);
p.waitfor();
}catch(Exeption e) {
System.out.println("erreur d'execution");
}

Maintenant Je veux interpreter la command iptables dans un code java..

try{
Runtime runtime = Runtime.getRuntime();
String[] cmd = { "/bin/sh", "-c", "iptables -L>fichier.txt" };
Process p = runtime.exec(cmd);
p.waitfor();
}catch(Exeption e) {
System.out.println("erreur d'execution");
}

toujour il affiche cet message

iptables v1.4.1.1: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

le problem c'est
comment j peux changer a root .
merci d'avance

  • # lapin compris

    Posté par  . Évalué à 1.

    Le message d'erreur parait pourtant clair: http://translate.google.fr/#en|fr|you%20must%20be%20root. C'est quoi que tu ne comprend pas dans ce message?

  • # merci

    Posté par  . Évalué à 0.

    salut
    le problem c'est
    comment j peux changer a root merci d'avance

    • [^] # Re: merci

      Posté par  (site web personnel) . Évalué à 2.

      Le plus simple est d'utiliser le mécanisme de "sudo", configuré de telle manière à ce qu'il ne te demande pas de mot de passe.

      Installe le paquet "sudo"

      Lance "visudo", et tape ceci:

      Host alias specification

      User alias specification

      User_Alias PRIVILEDGE_USERS = alimanoubi

      Cmnd alias specification

      Cmnd_Alias PRIVILEDGE = \

                          /sbin/iptables
      

      User privilege specification

      PRIVILEDGE_USERS ALL = NOPASSWD: PRIVILEDGE

      A partir de là, l'utilisateur "alimanoubi" peut lancer la commande "iptables" en tapant:

      sudo /sbin/iptables

      Ton programmes Java devra donc lancer "sudo /sbin/iptables" à la place de "iptables".

      • [^] # Re: merci

        Posté par  . Évalué à -2.

        salut
        merci pour le code
        mais ne fonctionne pas svp y a pas d'autre solution

        • [^] # Re: merci

          Posté par  . Évalué à 2.

          y a pas d'autre solution

          Apprendre les bases par exemple :-)
          Demande à google de t'aider pour la commande sudo et son fichier de configuration, ça devrait le faire.

        • [^] # Re: merci

          Posté par  . Évalué à 2.

        • [^] # Re: merci

          Posté par  (site web personnel) . Évalué à 1.

          Retire le saut de ligne qu'il y a après "Cmnd_Alias PRIVILEDGE". C'est le nouveau LinuxFR qui l'a rajouté

          Renseignes-toi sur Google sur l'utilisation de sudo.

          • [^] # Re: merci

            Posté par  . Évalué à -2.

            j'ai retiré le saut de ligne qu'il y a après "Cmnd_Alias PRIVILEDGE"
            mais le code ne fonctionne pas
            svp j besoin de code sur Ubuntu 9.04

  • # runtime.suexec ou sudo ton_programme

    Posté par  . Évalué à 2.

    si java ne te permet pas de faire le

    sudo iptables

    à l'interieur du programme via runtime.exec()

    alors il faut chercher d'autres pistes :
    - une fonction runtime.suexec() qui ferait que c'est java qui ferait la demande d'elevation de proviliege et pas le shell lancé par java
    - essayer en lancant ton programme en sudo, il suffit juste de faire sudo ton_programme

  • # une reponse ?

    Posté par  . Évalué à 4.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.