在我的伺服器中,我透過 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
如果是 Gitolite推送提交到 git (gitolite) 儲存庫會弄亂檔案權限(不再有 trac 存取權限)