在java中使用特权运行sudo su命令

时间:2016-06-13 10:58:55

标签: java bash unix

要求是在java中运行以下unix命令sudo su - fwt****app

以下是我的代码:

Channel channel=session.openChannel("exec");

String[] cmd = {"/bin/bash","-c","echo password| sudo -S -p su - fwt***app; ls"};

((ChannelExec)channel).setCommand(cmd.toString());

InputStream in=channel.getInputStream();

OutputStream out=channel.getOutputStream();

((ChannelExec)channel).setErrStream(System.err);

channel.connect();

out.write(("Password"+"\n").getBytes()); 

out.flush(); 

也尝试了其他方法,((ChannelExec)channel).setCommand(sudo -S -p su - fwt***app),它没有用。

我尝试使用命令切换到其他用户 su - fwtveguiapp 密码: 但得到回应 - 苏:抱歉 它需要使用sudo和su命令运行。 由于需要sudo和su命令,我在sudo命令中收到语法错误。其他引用仅对sudo命令有帮助,因此它们对我的情况没有帮助。

1 个答案:

答案 0 :(得分:0)

我认为无法切换到root用户或其他用户。

但你可以做的是用sudo运行一个进程。我认为您需要在cmd []

中将每个参数提供为String
String[] cmd = {"/bin/bash","-c","sudo", "fwt***app"};

如果您有多个命令,则需要单独执行每个命令