2011-11-22 43 views
0

我試圖用PHP這種方式執行路由添加命令: exec("/sbin/route -net 127.0.0.1", $output);和我得到SIOCADDRT operation not permitted。我想這是因爲我沒有通過sudo執行路由命令。 但我不能從PHP做sudo,因爲命令要求輸入su密碼。那麼如何在沒有sudo的情況下運行路由添加?內核的IP路由表操作的PHP接口不允許

謝謝!

回答

1

要做到這一點,恕我直言,最好的方式來獲得從標準輸入密碼,是創建使用這個命令shell腳本。之後,讓這個shell腳本以/etc/sudoers的root身份執行。

添加sudoers文件的語法可以在this question's accepted answer中找到。

所以,你只需要:

exec("/usr/bin/sudo /path/to/script"); 

這樣,你的root密碼不被暴露,你可以添加你想在你的腳本的任何命令。

0

您可以發送一組須藤使用-S參數

exec("echo 'password' | sudo -u root -S /sbin/route -net 127.0.0.1", $output);