Wykonaj polecenie powłoki w Tomcat

Mam więc następujący problem: Mam usługę internetową działającą na serwerze Tomcat7 w systemie Linux. Usługa internetowa musi jednak wykonać niektóre polecenia (głównie operacje na plikach, takie jak kopiowanie i montowanie). Kopiowanie Zastąpiłem java.nio, ale nie sądzę, że istnieje zamiennikmount.

Próbuję więc wykonywać polecenia powłoki z mojego procesu Java Tomcat. Niestety nie wykonuje moich poleceń. Wcześniej zaimplementowałem wykonywanie poleceń powłoki w Javie. Mój kod powinien być poprawny:

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

<myimage> i<mymountpoint> są ścieżkami absolutnymi, więc nie ma tam żadnych problemów.

Debugowałem moje polecenia i działają po uruchomieniu na konsoli.Próbowałem wysłać inne polecenia. Proste polecenia, takie jakid ipwd pracują!Próbowałem użyć/bin/bash -c "<command>", który nie działa.Próbowałem wykonać skrypt powłoki, który wykonuje polecenie, które nie działa.Próbowałem uciekać ze spacji w moim poleceniu, które nie działało.

Więc zagłębiłem się jeszcze głębiej i teraz podejrzewam jakąś politykę bezpieczeństwa Tomcata (Piaskownica?), co uniemożliwia mi wykonanie polecenia. Ponieważ bezpieczeństwo nie jest dla mnie problemem (jest to system wewnętrzny, całkowicie odizolowany od świata zewnętrznego), wypróbowałem hack, który niedawno stał się dość popularny:

System.setSecurityManager(null);

To też nie zadziałało. Używam Java7 i Tomcat7 na RHEL6. Tomcat7 jest właśnie rozpakowywany! Nie mam żadnych plików w / etc / .. ani w żadnym innym folderze niż / opt / tomcat /, gdzie rozpakowałem zip ze strony głównej Tomcat. Przeszukałem folder / opt / tomcat / conf pod kątem ustawień bezpieczeństwa, ale wszystko, co mogłem znaleźć, to plik catalina.policy, gdzie nie wyglądało na to, że mogę ustawić poziom zabezpieczeń dla poleceń powłoki.

Jakieś pomysły?

questionAnswers(5)

yourAnswerToTheQuestion