Apache-2.2

在(Apache -> Django -> 子程序)堆棧中執行“git pull”時“權限被拒絕”

  • July 7, 2010

我在 Apache 伺服器上有一個 Django 應用程序,用於subprocess.Popen對該git pull伺服器上儲存的儲存庫進行操作。

它設法為伺服器獲取新的送出,但它不能進行結帳:

error: git checkout-index: unable to create file run_gui.py (Permission denied)

完全相同的應用程序在我的 Windows 系統上執行,能夠成功地從遠端提取 git repo。但在我的 Linux 伺服器上,它失敗並顯示上述錯誤消息。當我ssh進入伺服器時,我設法git pull在 shell 中執行了一個操作,並且它沒有錯誤地完成。但不是來自 Django 應用程序。

我認為這可能是權限問題;subprocess.Popen但是我通過使用相同的過程來檢查 Django 在哪個使用者下執行id。我有自己的使用者:

uid=608(coolrr) gid=608(coolrr) groups=608(coolrr)

這是擁有 repo 的使用者。

我還確認我可以從 Django 應用程序在文件系統上創建一個簡單文件。

有誰知道發生了什麼?

我發現了我的錯誤;我沒有使用正確的“工作目錄”。這次我給出Popen了一個cwd論點,我將它設置為我的倉庫的路徑,並且它沒有問題地工作。

引用自:https://serverfault.com/questions/158373