不允许用于内核 IP 路由表操作的 PHP 接口
我正在尝试以这种方式使用 PHP 执行路由添加命令: exec("/sbin/route -net 127.0.0.1", $output);
并且我收到 SIOCADDRT 操作不允许
。我想这是因为我没有通过 sudo 执行路由命令。 但我无法从 php 执行 sudo,因为该命令要求输入 su 密码。那么如何在没有 sudo 的情况下运行route add呢?
谢谢!
I'm trying to execute route add command with PHP this way:exec("/sbin/route -net 127.0.0.1", $output);
and I'm getting SIOCADDRT operation not permitted
. I suppose this is because I don't execute the route command through sudo
.
But I can't do sudo from php because the command asks for the su password. So how can I run route add without sudo?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
恕我直言,最好的方法是创建一个使用此命令的 shell 脚本。之后,允许此 shell 脚本在
/etc/sudoers
中以 root 身份执行。在 sudoers 文件中添加的语法可以在 this 中找到问题的已接受答案。
所以你只需要:
这样,你的 root 密码就不会暴露,你可以在脚本中添加你想要的任何命令。
The best way to do this is, IMHO, is to create a shell script which use this command. After that, allow this shell script to be executed as root in
/etc/sudoers
.The syntax to add in sudoers file can be found in this question's accepted answer.
So you just need to:
This way, your root password is not exposed and you can add any command you'd like in your script.
您可以使用 -S 参数发送 set sudo 从标准输入获取密码
You can send set sudo to get password from standard input using -S argument