CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh が動作していません

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh が動作していません

Web インターフェイスの IPtables 管理を試行しています。

ファイルを作成しましたテスト

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $output;

/usr/bin/iptables.sh に NOPASSWD を指定して、パスワードを使用せずに Apache 経由で sudo を使用してファイルを実行できるようにします。

sudo iptables -L

sudoers ファイル:

apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh

しかし、まだエラーが発生しています

ローカル システム管理者からいつもの講義を受けていると思います。通常は次の 3 つに要約されます。#1) 他人のプライバシーを尊重する。#2) 入力する前に考える。#3) 大いなる力には大いなる責任が伴う。sudo: パスワードを読み取るにはターミナルが必要です。-S オプションを使用して標準入力から読み取るか、askpass ヘルパーを設定します{"mode":"full","isActive":false}

しかし、私が

apache ALL=(root) NOPASSWD: ALL

すべて正常に動作しています。

ディレクトリを再確認し、正確なパスを使用しました

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

まったく無知なので、誰か道順を教えてもらえませんか? :'(

答え1

呼び出すコマンドはファイルsudo内の内容と一致する必要がありますsudoersが、あなたの場合は一致しません。

を実行しようとしましたbash /usr/bin/iptables.shが、sudoersの実行のみが許可されます/usr/bin/iptables.sh

答え2

/usr/bin/iptables.shルートのルートを参照するので、sudo を試してください。

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $output;

関連情報