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