1

我想知道如何askpass用Java编写程序。我希望能够sudo在 Java中使用Process,但是我收到一个错误,告诉我要制作一个askpass程序。

我想从JTextField( Swing) 获取密码并将其提供给Process.

4

3 回答 3

0

如果不配置 sudoers,就不能在脚本或 java 程序中使用 sudo。您需要在 /etc/sudoers 中进行以下设置

Defaults:<username> !requiretty

其中 username 是 Java 进程的所有者。此外,您可能不希望被提示输入密码。所以你想要 -n 选项

sudo -n <mycommand>

为了使其正常工作,您可能需要在 /etc/sudoers 上进行进一步配置。执行此操作的安全方法往往非常特定于您尝试运行的命令。一个快速而肮脏的解决方案是在 /etc/sudoers 中包含以下内容

user <username>=(ALL) NOPASSWD: ALL
于 2013-08-28T23:45:12.650 回答
0

我通过让用户输入他们的sudo密码并执行如下命令来解决这个问题:

outputStreamWriter.write((useSudo.isSelected() ? " echo " + sudoPass + " | sudo -S " : "") + command);

于 2013-08-30T19:10:57.487 回答
0

这是一个可以帮助您入门的单行代码:

System.out.println(JOptionPane.showInputDialog(null, args[0], "AskPass", JOptionPane.QUESTION_MESSAGE));
于 2013-08-29T00:34:00.663 回答