簡體   English   中英

從瀏覽器中的Python子進程調用Shell腳本時,權限被拒絕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM