不允许使用PHP接口进行内核的IP路由表操作

时间:2011-11-22 13:22:31

标签: php shell unix exec routes

我正在尝试用这种方式用PHP执行route add命令: exec("/sbin/route -net 127.0.0.1", $output);我正在SIOCADDRT operation not permitted。我想这是因为我没有通过sudo执行route命令。 但我不能从php做sudo,因为该命令要求输入su密码。那么如何在没有sudo的情况下运行路由添加?

谢谢!

2 个答案:

答案 0 :(得分:1)

最好的方法是,恕我直言,创建一个使用此命令的shell脚本。之后,允许此shell脚本在/etc/sudoers中以root身份执行。

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

所以你只需要:

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

这样,您的root密码不会公开,您可以在脚本中添加任何您想要的命令。

答案 1 :(得分:0)

您可以使用-S参数

发送set sudo以从标准输入获取密码
exec("echo 'password' | sudo -u root -S /sbin/route -net 127.0.0.1", $output);