【发布时间】:2013-04-09 07:56:11
【问题描述】:
我正在尝试使用 mod_python 在 Apache 2.x 中运行 python 脚本。我和发布者一起编辑了 httpd.conf
LoadModule python_module /usr/local/apache2/modules/mod_python.so
<Directory /usr/local/apache2/htdocs/mod_python>
SetHandler mod_python
PythonHandler mod_python.publisher
PythonDebug On
我正在尝试使用需要 root 权限的 python 脚本在防火墙中添加规则。它要求root权限?请有人帮忙。
#!/usr/local/bin/python
#from mod_python import apache
import sys
import errno
import pf
def index(req):
filter = pf.PacketFilter()
try:
# Enable packet filtering
filter.enable()
print "pf is enabled"
return "pf is enabled"
except IOError, (err, msg):
if err == errno.EACCES:
#sys.exit("Permission denied: are you root?")
return ("Permission denied: are you root?")
elif err == errno.ENOTTY:
#sys.exit("ioctl not supported by the device: is the pf device correct?")
return ("ioctl not supported by the device: is the pf device correct?")
这是我想在 openBSD 上通过 apache 执行的 python 脚本。它使用 mod_python。
【问题讨论】:
-
拜托,伙计!你的问题很难理解。另外,您所描述的这件事对我来说似乎很错误。仅通过 pfctl(8) 更改固件状态。向我们发布您的脚本的链接,以便我们提供帮助。 httpd 以用户 www 身份运行,因为它是特权分离的,因此不允许它使用 sudo 是正确的行为。所以:更多信息,更清晰。
-
我现在注意到您从端口使用 apache2(为什么?)所以默认情况下这不是 chrooted。你作为哪个用户运行 httpd?
-
@ramrunner mod_python 3.x 版仅支持 apache 2.x。我正在尝试使用 GUI 在 pf 中添加规则。单击按钮时,将执行 python 脚本并添加规则。我在 apache2 中嵌入了 mod_python 并尝试执行 python 脚本。但它要求root权限。我如何配置东西来执行这样的脚本。
-
好吧,从来没有见过这个 pypf 的东西,(而且还看不到它的目的)。但正如我所见,(和格雷厄姆邓普顿所说)如果这个东西使用 ioctl 使其工作的唯一方法就是以 root 身份运行整个 apache。这与以 root 身份运行 mod_python 一起是一个非常糟糕的坏主意。所以有两种方法可以工作:(a)转储这个pypf东西并在pfctl之上编写你自己的包装器。 (b) 不要直接使用这个 pypf 程序,而是让它在一个单独的 python 程序中以 root 身份运行,并且只与它将作为 www 运行的实际 mod_py 程序进行通信(也许通过 unix 套接字?)。
标签: apache python-2.7 mod-python openbsd