Выполнить команду оболочки в 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>
абсолютные пути, так что никаких проблем там тоже нет.
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, где, похоже, я не мог установить какой-то уровень безопасности для команд оболочки.
Есть идеи?