我想知道如何askpass
用Java编写程序。我希望能够sudo
在 Java中使用Process
,但是我收到一个错误,告诉我要制作一个askpass
程序。
我想从JTextField
( Swing
) 获取密码并将其提供给Process
.
如果不配置 sudoers,就不能在脚本或 java 程序中使用 sudo。您需要在 /etc/sudoers 中进行以下设置
Defaults:<username> !requiretty
其中 username 是 Java 进程的所有者。此外,您可能不希望被提示输入密码。所以你想要 -n 选项
sudo -n <mycommand>
为了使其正常工作,您可能需要在 /etc/sudoers 上进行进一步配置。执行此操作的安全方法往往非常特定于您尝试运行的命令。一个快速而肮脏的解决方案是在 /etc/sudoers 中包含以下内容
user <username>=(ALL) NOPASSWD: ALL
我通过让用户输入他们的sudo
密码并执行如下命令来解决这个问题:
outputStreamWriter.write((useSudo.isSelected() ? " echo " + sudoPass + " | sudo -S " : "") + command);
这是一个可以帮助您入门的单行代码:
System.out.println(JOptionPane.showInputDialog(null, args[0], "AskPass", JOptionPane.QUESTION_MESSAGE));