2

我正在使用以下代码从我的 Java 应用程序运行命令:

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

我想执行 .jar 只需单击它并选择“Open with..”->“Java”;

问题是由于“sudo”命令,应用程序一直在寻找密码,但没有调用终端,用户无法提供密码..

那么,我怎么能调用上面的 coomand 和一个终端来让用户有机会插入密码并且应用程序最终继续运行呢?

非常感谢!

4

1 回答 1

0

这是一个 sudo 问题,而不是 Java 问题;sudo 以 root 身份执行操作。您的进程没有 root 权限,因此 sudo 需要对人类进行身份验证。这是一个特性,而不是一个错误。系统不应该允许您运行 root 命令。

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

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

或者您可以查看 sudo 和 sudoers 的手册页——可以将帐户配置为不需要密码,并在需要密码时将其限制为特定命令。

于 2013-01-10T18:29:30.280 回答