我有一个允许我定义java可执行文件(/usr/bin/java
)的程序,但不允许我向可执行文件添加特定参数。
我希望每次都能使用特定参数运行Java,以便启用Security Manager。
到目前为止,我已尝试在/usr/bin/java
之后添加参数,因此它看起来像
java=/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy
这不起作用,因为程序可能会检查文件是否存在。我尝试的另一种方法是创建一个名为java
的bash脚本,其中包含:
/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $*
然后我将java路径设置为/home/java
(我脚本的位置)。然而,这也没有用。有什么方法可以做到吗?
感谢。
答案 0 :(得分:1)
将您的java调用放入shell脚本java.sh
:
#!/bin/bash
/usr/bin/java -Djava.security.manager -Djava.security.policy=/home/java.policy $@
使用chmod u+x java.sh
更改权限,然后使用java=./java.sh
调用您的程序(根据需要调整脚本路径)。
shebang行(#!/bin/bash
)和执行权限在这里都很重要。没有它们,exec*
系列的系统调用将失败,因为内核不知道如何处理该文件,或者因为缺少可执行位而导致执行被拒绝。
直接从shell(./java.sh
)运行时会有所不同,因为大多数shell都具有该情况的一些兼容性功能,因此如果exec*
失败,它们将在shell中运行脚本。必须设置执行权限。
唯一不需要的情况是你将脚本作为shell的参数:bash java.sh
。
答案 1 :(得分:0)
您的第二种方法可以,但您的问题可能是您的Multicraft应用程序找不到您的脚本。更重要的是,您的Web服务器(Apache?)的环境可能需要修改PATH才能找到您的java包装器脚本。