1

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、サイコロはありません。

4

1 に答える 1

4

NOPASSWD/ etc / sudoersを追加するだけです:

user     ALL = NOPASSWD: /home/keeboi/Desktop/iptool.sh

パスワードチェックをオフに切り替えます。

于 2012-07-05T01:42:53.727 に答える