2011-11-22 44 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);