[英]Permission Denied when Calling Shell Script from a Python Subprocess in Browser
我正在通過ajax調用來調用python腳本
$.ajax({
url: "http://localhost/username/test.py",
type: "post",
data: JSON.stringify({'param':{"hello":"world"}}),
dataType: "json",
success: function(response) {
console.log(response);
},
error: function(error) {
console.log(error);
}
});
python腳本開始(已經設置了conf文件並運行了apache服務器),但是隨后python腳本應該遍歷一堆調用各種shell文件的子進程調用。 像這樣:
for line in reader:
var=line["A"]
var2=var[:-4]
var3=line["B"]
print(var2)
subprocess.call(["sh","dummy.sh",var,var2,var3])
相同的python腳本在終端中可以正常工作。 但是,當我通過Web瀏覽器運行時,在瀏覽器中獲得了500錯誤的權限。 進入apache日志,向我顯示其遇到權限錯誤
[2015年7月23日星期四18:13:55.958161] [cgi:error] [pid 19878] [客戶端:: 1:54132] AH01215:dummy.sh:第37行:inputFile.xml:權限被拒絕,引用者: http://本地主機/用戶名/
如何傳遞權限? 還是我在這里做錯了什么?
我假設當您在終端上運行python腳本時,它會以您的用戶ID作為進程運行。 如果您可以這樣做打開輸入文件,則很可能是權限問題。
apache進程只是沒有足夠的權限來打開文件。
我建議:
檢查文件的所有者和權限-確保Apache進程userID可讀。 這要求文件至少具有讀取權限,即。 -rw-r--r--(chmod 644)。
另外,請不要忘記目錄路徑的權限和/或所有權。 例如。 如果文件位於/home/foo/bar/inputFile.xml中,則需要檢查Apache用戶可以訪問整個路徑/ home / foo / bar。 這至少需要目錄上的drwx--x--x(chmod 711)。
感謝Maelstrom,Revolt和rici。 inputFile.xml實際上是在dummy.sh中創建的,然后dummy.sh中的其他步驟在inputFile.xml上進行。 我還期望,由於我已經賦予了文件夾755訪問權限中的其他文件,因此限制了這些新形成的xml文件。 如何確保由dummy.sh創建的所有文件都具有可以執行的足夠權限? 非常感謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.