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