ユーザー www-data にコマンドを許可するにはどうすればよいですか?

ユーザー www-data にコマンドを許可するにはどうすればよいですか?

eth0 から IP アドレスを取得するために、次の PHP コマンドを実行してみます。

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | tr ':' ' ' | awk '{ print $3 }'"));

しかし、何も返ってきません。まったく同じコマンドを ssh 経由で実行すると IP が取得されるため、コマンドは機能するはずです。

私はvisudoこれらの行を開いて追加し、その後apache2を再起動しました

www-data        ALL = NOPASSWD: /sbin/ifconfig
www-data        ALL = NOPASSWD: /bin/grep
www-data        ALL = NOPASSWD: /usr/bin/awk
www-data        ALL = NOPASSWD: /usr/bin/tr

しかし、まだ何も返ってきません

答え1

grep パターンが出力と一致していないようでifconfiggrep出力が生成されない場合は、次を試してください。

$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | awk '{ print $2 }'"));

答え2

解決策を見つけました。OSshell_execがドイツ語に設定されている場合でも、実行すると常に英語の出力が得られるため、出力にではなく がshell_exec("/sbin/ifconfig")常に表示されます。inet addrinet Adresse

また、ファイルのユーザーとグループを に変更し、 でスクリプトの実行を許可することも忘れていましたがwww-datachownこれchmodが必要なのかどうかはわかりません。

関連情報