Web アプリケーションには su 権限がないため、sudo を必要とするシェル スクリプトを実行したいと考えています。また、ユーザーにパスワードを入力させないようにしたいと思います。私のオプションは何ですか?これは基本的に私がやろうとしていることです。
Wicket申請書(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
すでにmy に追加しようとしました/etc/sudoers
が、それでもパスワードが必要です。
アップデート
あまりにも追加されkeeboi ALL = NOPASSWD: /home/keeboi/Desktop/changeip.jar
、サイコロはありません。