我使用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);
答案 0 :(得分:3)
生成的进程将作为运行JVM的同一用户执行。根据您的应用程序,如果它以root身份运行可能不是一个好主意。
但如果是,您可以使用Linux命令更改为其他用户,例如:
su <user> -c "<command>"
将以用户<command>
运行<user>
。
答案 1 :(得分:1)
使用
runuser -l userName -c 'command'
在exec()函数中。
这是我运行的命令的快照
或者如果您想从特定路径运行特定命令,如
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")