2011-09-03 55 views
5

我目前正在與建立一個Git倉庫服務器,所以我們可以從SVN切換到GIT嘗試接入。我幾乎涵蓋了所有內容,但是留下了一個問題。只顯示GIT回購的哪個用戶擁有的GitWeb

當前設置如下:

  • 所有開發人員(非開發商)有,因爲服務器是NIS客戶
  • 所有回購在/ var是由一個用戶帳戶&正確的組/的git/
  • 所有拉/推是通過SSH

做這工作完全到目前爲止,並消除了的gitosis或gitolite的需要。

因爲我想有我設置的GitWeb包括PATHINFO存儲庫的可瀏覽的概述。因爲回購是私人的,我已經通過Perl AuthenNIS設置了身份驗證,這很有效,但是在這裏我遇到了一個問題。

這是不需要的,所有的開發人員可以訪問所有存儲庫,但只的GitWeb顯示每個倉庫它(Apache用戶)可以閱讀。

所以我的問題是:是否有可能使gitweb只顯示GIT repo的當前登錄用戶有權訪問?

可能的解決方案:通過的.htaccess

  1. 進一步的訪問控制。該PATHINFO將使這一點,但它不會阻止回購的從通過非PATHINFO的URL被訪問(例如/repo.git/是行不通的,但/gitweb.cgi?p=repo.git會)
  2. 設置一個完整的gitosis/gitolite環境並將其整合到gitweb中(本質上爲this)。我想阻止這種情況,因爲開銷是不可取的
  3. 使gitweb作爲經過身份驗證的HTTP用戶運行。這將修復所有的訪問控制問題,但我不知道如何去做
  4. gitweb的$export_auth_hook結合$cgi->remote_user似乎很有希望,但我對perl的理解太有限,無法使用它(掛鉤需要驗證用戶有權訪問repo目錄之前顯示/導出它)

有沒有人知道如何使3或4工作或有另一種解決方案?

回答

2

如果開發商正在推動/使用ssh下(我相信)自己用戶名從存儲服務器拉動的話,或許最簡單的方法來完成,這是找到一種方法來運行在該用戶的gitwebgit身份。

舉例來說,找到一種方法執行gitweb前添加認證掛鉤。然後添加一個圍繞gitweb的包裝器,該包裝器執行sudo -u $user gitweb.real,其中$user是經過身份驗證的用戶名。

或者,你可以只包住git命令,即有gitweb執行一個包裝。

爲了在Apache中實現對NIS/PAM的身份驗證,請看mod_auth_external

+0

謝謝。 NIS身份驗證沒有問題,但不允許apache用戶sudo創建巨大的安全漏洞? – dtech

+3

你可以限制誰可以用'sudo'做什麼。看看'男人sudoers'。 – ErikR

相關問題