如何从特定用户的java执行shell脚本

时间:2014-07-22 09:54:47

标签: java shell java-ee

我使用Runtime.getRuntime().exec()调用一个shellcript。

我的脚本被正确调用但它以root用户身份执行,我想与其他用户调用它?

我该怎么做?

我的命令就像:

String wrapper_script="homedir+"/blast_distribute.sh "+" --seqs="+seqs+" --i="+formobj.getUpFile().getFileName()+" "+formobj.getSelected_program();

而不是我使用:Runtime.getRuntime().exec(wrapper_script);

3 个答案:

答案 0 :(得分:3)

生成的进程将作为运行JVM的同一用户执行。根据您的应用程序,如果它以root身份运行可能不是一个好主意。

但如果是,您可以使用Linux命令更改为其他用户,例如:

su <user> -c "<command>"

将以用户<command>运行<user>

答案 1 :(得分:1)

使用

runuser -l  userName -c 'command'

在exec()函数中。

这是我运行的命令的快照

enter image description here

或者如果您想从特定路径运行特定命令,如

runuser -l  userName -c 'path/to/Dir/command arg arg2 arg2'

答案 2 :(得分:0)

如果您的计算机上安装了sudo,请将相应的用户添加到/etc/sudoers,然后您可以使用Runtime.getRuntime().exec("sudo -u your-user your-command")