trac 和 git 使用者存取 gitolite 伺服器儲存庫的正確檔案權限

trac 和 git 使用者存取 gitolite 伺服器儲存庫的正確檔案權限

在我的伺服器中,我透過 gitolite 託管一些 git 儲存庫,並且每個儲存庫都有一個 trac。

我有一個名為 git 的用戶從伺服器 ( ) 推送/拉取git clone git@server:repo。 trac 是一個有 mod_wsgi 的 apache 虛擬主機。這與 www-data 用戶一起運行。

所以讓我困惑的(也許是因為我對檔案權限沒有太多了解)是 git 儲存庫(/home/git/repositories/...)的最佳權限設定(chown、chmod)是什麼。

www-data(或trac)至少需要讀取權限(我認為)。 git(或 gitolite)顯然需要讀取/寫入權限來推送變更集。

我嘗試了一些(即將 www-data 和/或 git 新增到 www-data/git 群組),但沒有得到正確的結果。至少兩者之一不起作用(git 或 trac)。

任何建議都將受到高度讚賞。

答案1

我想說最安全的方法是建立一個名為 git-readers 的群組

將 git 和 www-data 新增到其中,然後具有以下資料夾結構:

/home/git - git:git-readers u=rwx,g=rx,o=
/home/git/repositories - git:git u=rwx,g=rwx,o=rx

這將允許 www-data 進入資料夾進行讀取,但只授予 git 使用者寫入權限。任何其他使用者都無法執行任何操作。

如果您想要新增其他編寫器,我將新增另一個群組 git-writers 並向其新增使用者和 git 以及 git-readers 群組,然後使用以下結構:

/home/git - git:git-readers u=rwx,g=rx,o=
/home/git/repositories - git:git-writers u=rwx,g=rwxs,o=rx

請注意群組權限中的“s”。這使得 writer 使用者使用 git-writers 群組作為預設群組。只有當寫入器均為 umask 0002 時,此操作才能正常運作。

答案2

相關內容