如何允許使用者 www-data 指令?

如何允許使用者 www-data 指令?

我嘗試執行以下 PHP 命令來從 eth0 取得 IP 位址。

$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 模式似乎與 的輸出不匹配ifconfig,因此grep沒有產生輸出,請嘗試:

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

答案2

我找到了解決方案。這是因為shell_exec即使作業系統設定為德語,總是會得到英語輸出,如果你執行,shell_exec("/sbin/ifconfig")那麼你總是會得到eginet addr而不是inet Adresse在輸出中。

我還忘記將文件的使用者和群組更改為www-datawithchown並允許使用 執行腳本chmod,但我不知道這是否有必要。

相關內容