Выполнить команду оболочки в Tomcat

Итак, у меня есть следующая проблема: у меня есть веб-сервис, работающий на сервере Tomcat7 в Linux. Однако веб-сервис должен выполнять некоторые команды (в основном файловые операции, такие как копирование и монтирование). Копия заменена на java.nio, но я не думаю, что есть замена дляmount.

So I'm trying to execute shell commands out of my Tomcat Java process. Unfortunately it doesn't execute my commands, Я уже реализовывал выполнение команд оболочки в Java. Так что мой код должен быть правильным:

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

<myimage> а также<mymountpoint> абсолютные пути, так что никаких проблем там тоже нет.

I've debugged my commands and they are working when executed on the console. I've tried sending other commands. Simple commands such as id and pwd are working! I've tried using /bin/bash -c "<command>", which didn't work. I've tried executing a shell script, which executes the command, which didn't work. I've tried escaping the spaces in my command, which didn't work.

Так что я копал еще глубже, и теперь я подозреваю о какой-то политике безопасности Tomcat (Sandbox?), который мешает мне выполнить команду. Поскольку безопасность для меня не проблема (это внутренняя система, полностью изолированная от внешнего мира), я попробовал взлом, который стал довольно популярным совсем недавно:

System.setSecurityManager(null);

Это тоже не сработало. Я использую Java7 и Tomcat7 на RHEL6. Tomcat7 только что извлечен! У меня нет никаких файлов в / etc / .. или в какой-либо другой папке, кроме / opt / tomcat /, где я извлек zip с домашней страницы Tomcat. Я искал в папке / opt / tomcat / conf параметры безопасности, но все, что я мог найти, это файл catalina.policy, где, похоже, я не мог установить какой-то уровень безопасности для команд оболочки.

Есть идеи?

Ответы на вопрос(5)

Ваш ответ на вопрос