Linux: Native Library mit Rootrechten ohne Prozess mit sudo zu starten

adalbert

Mitglied
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
 
Die Lösung: Batch-Dateien!
Ich arbeite zwar kaum mit Linux, aber ich kenne mich mit Raspbian (Raspberry Pi) aus. Sudo ist ein Konsolenbefehl, richtig?
Die Lösung liegt auf der Hand: Du schreibst deinen Sudo-Befehl in eine Batch-Datei, etwa so:
Code:
 @start sudo -deinkommand
        java -deinprogramm  //weiß natürlich nicht,wie dein Command aussieht, ist nur ein Beispiel

Und zur Unterscheidung: Die Dateiendung!
Linux verwendet für Batch-Dateien die Endung .au, Windows .bat
Ich hoffe ich habe dir geholfen, 🙂
Grüße Tucan
 
Zuletzt bearbeitet:

Zurück
Oben