通过Java App调用终端并运行命令

时间:2013-01-10 18:12:34

标签: java linux shell process terminal

我正在使用followig代码从我的Java App运行命令:

String cmd[] = {"sh","-c", "sudo chmod 777 -R " + path};
Terminal.runCommand(cmd);

我只想点击它来执行.jar并选择“打开方式......” - > “Java” 的;

问题是应用程序因为“sudo”命令而不断输入密码,但没有调用终端,用户无法提供密码..

那么,我如何调用上面的一个和一个终端给用户插入密码的机会,应用程序终于继续了?

非常感谢!

1 个答案:

答案 0 :(得分:0)

这是一个sudo问题,而不是Java问题; sudo以root为根本做事。你的过程没有root权限,因此sudo需要对人类进行身份验证。这是一个功能,而不是一个bug。系统不允许您运行root命令。

一个选项可能是使用gksu代替,默认情况下会在某些发行版中提供。它的工作方式类似,但会在GUI中弹出密码对话框而不是(在这种情况下不存在的)终端。

另一种可能是简单地以root身份运行Java进程,其中包含可能存在的所有安全隐患。在某些情况下,这可能是一个有效的选择,但要小心。

或者您可以查看sudo和sudoers的手册页 - 它可以配置帐户不需要密码,并且可以限制特定命令。