Hallo zusammen,
ich versuche aus Javaanwendung heraus Netzwerkverkehr mitzuschneiden und nutze dafür jpcap, was letztendlich nur auf wpcap unter Windows bzw. libpcap unter linux mit ein bischen JNI zurückgreift. Meine Javaanwendung bindet letztendlich via JNI die sharedLib jpcap.so ein, welche letztlich nur bindings für libpcap bereitstellt.
Das funktioniert sehr gut, jedoch muss der Prozess dafür unter Linux mit mit rootrechten gestartet werden, was ich (leider?) nicht im Produktivbetrieb machen kann/darf/soll/...
Es wäre jedoch vollkommen OK etwas ala sudo nur für die diese sharedLib jpcap.so einzurichten. Ein NoGo ists eben den ganzen Java-Prozess mit sudo zu starten.
Ich habe versucht die library in's sudoers-file aufzunehmen und dabei NOPASSWD gesetzt, was aber nicht geklappt hat (weil ich das ganze eben doch mit sudo starten müsste).
Hätte jemand eine Idee, wie man sowas unter Linux erreichen könnte, bzw. kann sowas überhaupt klappen?
Die Alternative wäre das Tool tcpdump für meinen user ins sudoers-file aufzunehmen und aus dem JavaProzess heraus mit sudo tcpdump .... das ganze zu realisieren. Das hat aber den Nachteil, dass ich 1) zwischen Linux und Windows unterscheiden müsste und 2) ich die Packete wieder aus der Ausgabe des Prozesses herausparsen müsste.
Grüße,
Adalbert
ich versuche aus Javaanwendung heraus Netzwerkverkehr mitzuschneiden und nutze dafür jpcap, was letztendlich nur auf wpcap unter Windows bzw. libpcap unter linux mit ein bischen JNI zurückgreift. Meine Javaanwendung bindet letztendlich via JNI die sharedLib jpcap.so ein, welche letztlich nur bindings für libpcap bereitstellt.
Das funktioniert sehr gut, jedoch muss der Prozess dafür unter Linux mit mit rootrechten gestartet werden, was ich (leider?) nicht im Produktivbetrieb machen kann/darf/soll/...
Es wäre jedoch vollkommen OK etwas ala sudo nur für die diese sharedLib jpcap.so einzurichten. Ein NoGo ists eben den ganzen Java-Prozess mit sudo zu starten.
Ich habe versucht die library in's sudoers-file aufzunehmen und dabei NOPASSWD gesetzt, was aber nicht geklappt hat (weil ich das ganze eben doch mit sudo starten müsste).
Hätte jemand eine Idee, wie man sowas unter Linux erreichen könnte, bzw. kann sowas überhaupt klappen?
Die Alternative wäre das Tool tcpdump für meinen user ins sudoers-file aufzunehmen und aus dem JavaProzess heraus mit sudo tcpdump .... das ganze zu realisieren. Das hat aber den Nachteil, dass ich 1) zwischen Linux und Windows unterscheiden müsste und 2) ich die Packete wieder aus der Ausgabe des Prozesses herausparsen müsste.
Grüße,
Adalbert