如何从Java程序没有密码运行sudo命令?

可能重复:
使用java执行带有“sudo”的linux shell命令,无需input所需的密码

我想通过Java程序在Linux上执行sudo命令,但它要求input密码。 但是我想要运行没有密码,请告诉我。 我的编是

public class JavaCommandProg { public static void main(String args[]) throws IOException, InterruptedException { String command="sudo cat /etc/sudoers"; Process myProcess =null; try { Runtime runtime=Runtime.getRuntime(); File file=new File("/home/users/admin/temp"); myProcess = runtime.exec(command,null,file); myProcess.waitFor(); InputStreamReader myIStreamReader = new InputStreamReader(myProcess.getInputStream()); BufferedReader br=new BufferedReader(myIStreamReader); String line; while((line=br.readLine())!=null){ System.out.println(line); } } catch (IOException anIOException) { System.out.println(anIOException); } } } Compling like: javac JavaCommandProg.java and : java JavaCommandProg 

通过使用sudo授予您的用户权限。 看看这里: http : //www.ducea.com/2006/06/18/linux-tips-password-usage-in-sudo-passwd-nopasswd/

例如:

 /etc/sudoers admin ALL = NOPASSWD: ALL 

如果你能得到它的运行,这将意味着一个安全漏洞。

我说过了…

  1. 授予您的用户权限(成为sudoer)
  2. 用sudo调用你的java程序

    $ sudo java JavaCommandProg

这将提示您在运行jvm时引入sudo密码,然后从Java程序中调用sudo。