我目前正在使用 Django、Apache 和 mod_wsgi 编写一个 Web 应用程序,它提供了一些 FreeBSD 服务器管理和配置功能,包括常见的防火墙操作。
我的 Python/C 库使用原始套接字直接与防火墙交互,并且在以 root 身份运行时工作得很好,但原始套接字操作只允许 root。
在这一点上,我唯一能想到的就是安装并使用 sudo 来明确允许 www 用户访问/sbin/ipfw 这并不理想,因为我更愿意使用我的原始套接字库操作而不是子进程调用。
我想另一种选择是编写(本地域套接字)或使用以 root 身份运行并处理这些请求的现有作业系统(Celery?)。
或者可能有一些我不知道的 WSGI 守护进程模式欺骗?我确定以前遇到过这个问题。有关处理此问题的最佳方法的任何建议?
请您参考如下方法:
使用 Celery 或其他以 root 身份运行的后端服务。以 root 身份运行 Web 应用程序进程是一个等待发生的安全问题。这就是为什么 mod_wsgi 会阻止您以 root 身份运行守护进程。当然,您可以破解代码以禁用排除,但我不会告诉您如何做到这一点。
