我試圖用PHP這種方式執行路由添加命令: exec("/sbin/route -net 127.0.0.1", $output);
和我得到SIOCADDRT operation not permitted
。我想這是因爲我沒有通過sudo
執行路由命令。 但我不能從PHP做sudo,因爲命令要求輸入su密碼。那麼如何在沒有sudo的情況下運行路由添加?內核的IP路由表操作的PHP接口不允許
謝謝!
我試圖用PHP這種方式執行路由添加命令: exec("/sbin/route -net 127.0.0.1", $output);
和我得到SIOCADDRT operation not permitted
。我想這是因爲我沒有通過sudo
執行路由命令。 但我不能從PHP做sudo,因爲命令要求輸入su密碼。那麼如何在沒有sudo的情況下運行路由添加?內核的IP路由表操作的PHP接口不允許
謝謝!
要做到這一點,恕我直言,最好的方式來獲得從標準輸入密碼,是創建使用這個命令shell腳本。之後,讓這個shell腳本以/etc/sudoers
的root身份執行。
添加sudoers文件的語法可以在this question's accepted answer中找到。
所以,你只需要:
exec("/usr/bin/sudo /path/to/script");
這樣,你的root密碼不被暴露,你可以添加你想在你的腳本的任何命令。
您可以發送一組須藤使用-S參數
exec("echo 'password' | sudo -u root -S /sbin/route -net 127.0.0.1", $output);