在wildfly

时间:2016-10-24 18:59:27

标签: tomcat servlets command wildfly sudo

我想在wildfly中的servlet中使用sudo运行特定的命令。

我知道我可以使用tomcat用户运行特定命令:

tomcat ALL=(root) NOPASSWD: /home/jur/virt.sh, /home/jur/createdisk.sh

我尝试了用户'widlfly',但这不起作用。 现在我不知道wildfly用户的名字是什么。我的servlet无法使用sudo运行命令。

在我的servlet中,我有这个:

ProcessBuilder pb = new ProcessBuilder("sudo /home/jur/createdisk.sh " + parameter);

wildfly给出错误:“Java.io.IOExeption:无法运行程序”sudo /home/jur/createdisk.sh参数“:error = 2,没有这样的文件或目录”

当我在终端中使用用户“jur”执行相同操作时,它的效果非常好。

1 个答案:

答案 0 :(得分:3)

ProcessBuilder类的构造函数接受多个参数,第一个需要是程序名,以下是程序的参数。

例如,调用ProcessBuilder pb = new ProcessBuilder("ls -l")会出现与您提到的相同的错误,但调用ProcessBuilder pb = new ProcessBuilder("ls", "-l")将会成功。

在你的情况下应该是正确的语法 ProcessBuilder pb = new ProcessBuilder("sudo", "/home/jur/createdisk.sh", parameter);