2012-11-27 85 views
0

我想從網頁中殺死一個進程。python os.sytem從cgi殺死進程

import os 

os.system(「killall Laser」) 

print("Content-Type: text/HTML;charset=utf-8") 
print("") 
print("Laser has been restarted.") 

將文件權限設置爲777,並設置了setuid和setgid。當我從命令行運行腳本但不在瀏覽器中時,該腳本起作用。

這是在ubuntu上運行,並且webserver是lighthttp。

該進程由root擁有。

import subprocess as sub, cgitb 

cgitb.enable(display=0, logdir="/tmp") 

p = sub.Popen(['killall;', 'Laser'],shell=True,stdout=sub.PIPE,stderr=sub.PIPE) 
output, errors = p.communicate() 
print("Content-Type: text/HTML;charset=utf-8") 
print("") 
print(output) 

和:

import subprocess as sub, cgitb 

cgitb.enable(display=0, logdir="/tmp") 

cmd1 = "su root" 
cmd2 = "killall Laser" 
p = sub.Popen("{}; {}".format(cmd1, cmd2),shell=True,stdout=sub.PIPE,stderr=sub.PIPE, close_fds=True) 
output, errors = p.communicate() 
print("Content-Type: text/HTML;charset=utf-8") 
print("") 
print(output) 

任何想法

我也嘗試使用?

馬特

回答

0

您應該指定.py文件通過ligghtpd來跑了作爲CGI/FastCGI的,腳本它的配置:

$HTTP["url"] =~ "^/cgi-bin/" { 
     cgi.assign = (".py" => "/usr/bin/python") 
} 

而且不要忘記認領(#在/ usr/bin/env python)在Python腳本的第一行。 在這裏閱讀更多的細節:http://ubuntuforums.org/showthread.php?t=1166401

+0

python腳本工作正常。該過程由root啓動,所以我認爲網頁沒有權限刪除它。有沒有辦法在Python中傳遞這樣的東西:su -s root在嘗試殺死進程之前? – Droter