运行 wildfly 中特定的 sudo 命令
Run specific sudo commands in wildfly
我想 运行 在我的 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: Cannot run program "sudo /home/jur/createdisk.sh parameter": error=2, No such file or directory"
当我在终端中对用户 'jur' 执行相同的操作时,它工作得很好。
ProcessBuilder 的构造函数class 有多个参数,第一个需要是程序名,后面是程序的参数。
例如,调用 ProcessBuilder pb = new ProcessBuilder("ls -l")
会出现与您提到的相同的错误,但调用 ProcessBuilder pb = new ProcessBuilder("ls", "-l")
会成功。
你的情况下正确的语法应该是
ProcessBuilder pb = new ProcessBuilder("sudo", "/home/jur/createdisk.sh", parameter);
我想 运行 在我的 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: Cannot run program "sudo /home/jur/createdisk.sh parameter": error=2, No such file or directory"
当我在终端中对用户 'jur' 执行相同的操作时,它工作得很好。
ProcessBuilder 的构造函数class 有多个参数,第一个需要是程序名,后面是程序的参数。
例如,调用 ProcessBuilder pb = new ProcessBuilder("ls -l")
会出现与您提到的相同的错误,但调用 ProcessBuilder pb = new ProcessBuilder("ls", "-l")
会成功。
你的情况下正确的语法应该是
ProcessBuilder pb = new ProcessBuilder("sudo", "/home/jur/createdisk.sh", parameter);