鉴于Web应用程序没有su权限,我想执行一个需要sudo的shell脚本。我还想避免让用户输入密码。我有什么选择?这基本上就是我想要做的。
@Override
protected void onSubmit() {
System.out.println("Submitted");
try {
Shell.updateIp("eth0", "192.168.217.129");
} catch (IOException e) {
e.printStackTrace();
}
}
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。
#!/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
同样,我想强调的是,网络应用程序没有获得任何su权限,我想避免向用户询问密码。
修改
我已尝试将keeboi ALL = NOPASSWD: /home/keeboi/Desktop/iptool.sh
添加到/etc/sudoers
,但仍需要密码。
更新
也添加了keeboi ALL = NOPASSWD: /home/keeboi/Desktop/changeip.jar
,没有骰子。
答案 0 :(得分:4)
只需在/ etc / sudoers中添加NOPASSWD
:
user ALL = NOPASSWD: /home/keeboi/Desktop/iptool.sh
切换密码检查。