2013-04-09 113 views
0

需要root權限。在與mod_python的Apache的執行我想在Apache 2.X的與運行mod_python的Python腳本。我編輯的httpd.conf與出版商如何運行python腳本,在OpenBSD的

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 

我試圖使用python腳本需要root權限添加防火牆規則。它要求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?") 

這是python腳本,我想通過apache在openBSD上執行。它使用mod_python。

+0

拜託,老兄!你的問題很難理解。 此外,你所描述的這件事似乎對我來說是非常錯誤的。只通過pfctl(8)改變fw狀態。發佈我們的鏈接到您的腳本,以便我們可以提供幫助。 httpd以用戶www身份運行,因爲它是priviledge分隔的,因此不允許它sudo是正確的行爲。所以:更多信息,更清晰。 – ramrunner 2013-04-09 12:33:56

+0

我現在注意到你使用apache2從端口(爲什麼?),所以這是默認情況下不chrooted。作爲用戶在運行httpd? – ramrunner 2013-04-09 13:01:10

+0

@ramrunner mod_python版本3.x僅支持apache 2.x。我正在嘗試使用GUI在pf中添加規則。在點擊一個按鈕,一個python腳本將執行和規則將被添加.. 在我的Apache2嵌入式mod_python的,並試圖執行python腳本。 但它要求root權限。 我怎樣才能配置執行這樣的腳本的東西。 – 2013-04-10 04:19:11

回答

1

某處,請發表您的Python腳本,並給我們的鏈接。 你的python腳本如何與pf通信?通過pfctl?假設你是tryng到一個IP地址添加到表

pfctl -t thetable -T add x.x.x.x 

找出哪些用戶運行的Apache

ps aux | grep apache 

然後你必須編輯的/ etc/sudoers文件有用戶能夠運行沒有密碼的pfctl命令。所以,讓我們說你運行Apache爲www。發生在sudoers的以下內容:

www ALL=(ALL:ALL) NOPASSWD: /sbin/pfctl 
在python腳本

最後(可以說與您通話子的外部命令)

from subprocess import call 
call(["sudo","pfctl","-T","theTable","-t","add", "x.x.x.x"]) 

但請記住,整個計劃是一個真正的壞主意你不應該那樣做。如果可以的話,請刪除python腳本,然後運行私有和審計的捆綁的apache 1.3。在chroot中運行網絡服務器。切勿將防火牆的控制權暴露給用戶輸入,尤其是當這種情況通過網絡傳播時。我相信,如果你詳細說明你想做什麼,我們可以找到一個更有效和安全的設置。

+0

先生我編輯的問題PLZ看看它。 它不使用pfctl。 它使用python中的py-pf庫來維護pf。 – 2013-04-15 07:55:24

1

不能下的mod_python作爲root用戶運行Python腳本。這是因爲Apache總是會將權限下放給不可信用戶。解決這個問題的唯一方法是從源代碼重新編譯Apache,並定義一個魔術預處理器宏,這個宏可以啓用允許Apache工作進程以root身份運行的安全漏洞。

總之,不這樣做,這是很危險的。

也知道mod_python的不再維持或發展,這是值得懷疑,你是否應該首先使用它。