Apache 和 CAP_NET_RAW
我有一个 php 脚本,可以在不使用 system() 的情况下执行跟踪路由。它使用 SOCK_RAW 和 ICMP。
我已经设法让这个脚本运行,而无需成为 root 用户或使用 CAP_NET_RAW 更改 sudoers 中的任何内容。
问题是,脚本仅在通过 shell 调用时才起作用,而不是通过浏览器调用。当我浏览浏览器时,出现错误: socket_create(): Unable to create socket [1]: Operation not allowed 。所以这里有些事情出了问题。
经过谷歌和谷歌搜索后,我无法弄清楚为什么通过 apache 调用相同的脚本时不起作用。我是否还需要将 CAP_NET_RAW 添加到 apache 配置文件中?
对此的任何建议将非常感激。
贾森
I have a php script that carries out a trace route without using system(). It uses SOCK_RAW and ICMP.
I have managed to get this script to run with out been a root user or changing anything in sudoers by using CAP_NET_RAW.
The thing is, the scrip only works when called through the shell, not through the browser. When I go through my browser I get the error: socket_create(): Unable to create socket [1]: Operation not permitted . So something is going a miss here.
After googleing and googleing I am unable to work out why the same script is not working when called through apache. Do I need to add CAP_NET_RAW to an apache config file as well?
Any advice on this would be very much appreciated.
Jason
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
典型的 Apache + PHP 安装在单独的系统用户(通常是 www-data)下运行。我的猜测是这个伪用户受到严格限制。尝试以 www-data 用户身份从 shell 执行 - 如果我是对的,它应该会失败。
Typical Apache + PHP installations run under a separate system user (usually www-data). My guess is that this pseudo-user is heavily restricted. Try executing from the shell as the www-data user - it should fail, if I'm right.