Führen Sie den Shell-Befehl in Tomcat aus

Ich habe also das folgende Problem: Ich habe einen Webdienst, der auf einem Tomcat7-Server unter Linux ausgeführt wird. Der Webservice muss jedoch einige Befehle ausführen (hauptsächlich Dateioperationen wie Kopieren und Mounten). Kopie, die ich durch java.nio ersetzt habe, aber ich glaube nicht, dass es einen Ersatz für gibtmount.

Daher versuche ich, Shell-Befehle aus meinem Tomcat Java-Prozess heraus auszuführen. Leider führt es meine Befehle nicht aus. Ich habe die Ausführung von Shell-Befehlen bereits in Java implementiert. Also sollte mein Code korrekt sein:

Process pr = Runtime.getRuntime().exec("mount -o loop -t iso9660 <myimage> <mymountpoint>");
pr.waitFor();

<myimage> und<mymountpoint> Es gibt absolute Pfade, also auch dort keine Probleme.

Ich habe meine Befehle getestet und sie funktionieren, wenn sie auf der Konsole ausgeführt werden.Ich habe versucht, andere Befehle zu senden. Einfache Befehle wieid undpwd sind am Arbeiten!Ich habe versucht mit/bin/bash -c "<command>", was nicht funktioniert hat.Ich habe versucht, ein Shell-Skript auszuführen, das den Befehl ausführt, was nicht funktioniert hat.Ich habe versucht, den Leerzeichen in meinem Befehl zu entkommen, was nicht funktioniert hat.

Also habe ich noch tiefer gegraben und vermute jetzt eine Tomcat-Sicherheitsrichtlinie (Sandkasten?), wodurch ich den Befehl nicht ausführen kann. Da Sicherheit für mich kein Problem ist (es ist ein internes System, das vollständig von der Außenwelt isoliert ist), habe ich einen Hack versucht, der erst kürzlich recht populär wurde:

System.setSecurityManager(null);

Das hat auch nicht funktioniert. Ich benutze Java7 und Tomcat7 auf RHEL6. Tomcat7 wird gerade extrahiert! Ich habe keine Dateien in / etc / .. oder einem anderen Ordner als / opt / tomcat /, in dem ich die Zip-Datei von der Tomcat-Homepage extrahiert habe. Ich habe den Ordner / opt / tomcat / conf nach Sicherheitseinstellungen durchsucht, aber alles, was ich finden konnte, war die Datei catalina.policy, in der anscheinend keine Sicherheitsstufe für Shell-Befehle festgelegt werden konnte.

Irgendwelche Ideen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage