鉴于Web应用程序没有su特权,我想执行一个需要sudo的shell脚本。我也想避免让用户输入密码。我有什么选择?基本上,这就是我想要做的。
小票申请表(用于更改IP的表格)
@Override
protected void onSubmit() {
System.out.println("Submitted");
try {
Shell.updateIp("eth0", "192.168.217.129");
} catch (IOException e) {
e.printStackTrace();
}
}
Shell.java
public static void updateIp(String ethernetInterface, String ip) throws IOException {
ProcessBuilder builder = new ProcessBuilder("/home/keeboi/Desktop/iptool.sh", ethernetInterface, ip);
Process child = builder.start();
Network.readOutput(child);
child.destroy();
}
iptool.sh执行一个可运行的jar。
iptool.sh
#!/bin/sh
sudo java -jar changeip.jar $1 $2
我得到:
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
再次强调一下,该Web应用程序没有任何su特权,并且我希望避免向用户询问密码。
编辑:
我已经尝试过将
keeboi ALL = NOPASSWD: /home/keeboi/Desktop/iptool.sh
添加到我的/etc/sudoers
中,但是它仍然需要密码。更新资料
也添加了
keeboi ALL = NOPASSWD: /home/keeboi/Desktop/changeip.jar
,没有骰子。 最佳答案
只需在/ etc / sudoers中添加NOPASSWD
即可:
user ALL = NOPASSWD: /home/keeboi/Desktop/iptool.sh
这将关闭密码检查。