Linux

允許使用者訪問單個 Git 儲存庫

  • August 12, 2015

考慮一個託管多個 Git 儲存庫的伺服器:

$ ls -l /opt/git/
drwxrwxr-x 7 ubuntu root   4096 Jan  2  2014 george.git
drwxrwxr-x 7 ubuntu root   4096 Dec 29  2013 john.git
drwxrwsr-x 7 ubuntu root   4096 Jul  4  2013 paul.git
drwxrwsr-x 7 ubuntu root   4096 Jun 30  2013 ringo.git

到目前為止,所有開發人員都可以通過 SSH 訪問所有 Git 儲存庫。我現在正在添加一個只能訪問john.gitrepo 的開發人員。我已經創建了一個 Linux 使用者yoko,但我不確定我應該如何讓他以最安全的方式yoko訪問該/opt/git/john.git目錄而不讓他訪問/opt/git/.

限制訪問的規範方式是什麼?

我的傾向是創建john.gitas 組foobar並將該組添加到 useryoko的組中。但是,如果我以後需要添加另一個可以訪問兩個 repos 的使用者會發生什麼?例如,我可能想添加cynthia同時訪問john.git和 的使用者paul.git。**我應該為每個 Git 儲存庫設置一個單獨的組嗎?**我可以看到它很快變得笨拙

請注意,這些使用者應該只能訪問他們自己的目錄以及允許他們訪問的 Git 儲存庫**。**/home/user/如果有一種符號連結的方法,即/home/yoko/john.git/opt/git/john.git一種阻止訪問其餘部分的方式,/opt/git/那將是最好的,但是我似乎無法像這樣配置系統。

該伺服器正在執行 Ubuntu Server 12.04,但如果需要,我可以將其更新到 14.04。使用者使用 RSA 密鑰通過 SSH 連接,無需密碼。他們將在伺服器上執行git pullgit push僅此而已。

對於少量的 repos,groups 方法工作得很好。是的,每個 repo 都可能需要自己的組,如果你有更多的 repo,它確實會變得笨拙。正如@AlexeyTen 在評論中提到的,如果你有更多的repos,或者想要一個更“高級”的管理界面,你應該看看像gitolite 或gitlab 這樣的repo manager。Gitolite 通過 git repo 中的文本文件進行管理(配置文件和 SSH 密鑰被送出到一個特殊的 git repo 並推送,一切都已配置)。另一方面,Gitlab 是一個一體化的 web 應用程序,在概念上類似於自託管的 Github。如果您不需要所有的花里胡哨,gitolite 幾乎肯定會完美地完成這項工作。

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