2017-12-18 129 views
0

我們正在構建一個評估過程,並希望限制特定用戶對特定分支的讀寫訪問權限。根據用戶名限制讀取和寫入訪問普通git存儲庫的分支

有「普通」用戶對所有內容具有讀寫訪問權限(這些用戶將對答案進行評分),並且將會有給定數量的評估用戶應該只具有讀訪問權限和讀/寫權限包含其名稱的分行(例如assessment-john.doe)。我們的評估中心將有一個包含500個用戶和密碼的列表,並將爲每個候選人提供來自該列表的一組憑證。

短版:我想配置git的,即:

  • 普通用戶(如tobichris)有:
    • 讀&寫訪問掌握
    • (理想只)讀訪問分支開始assessment-
  • 作爲sessment用戶(例如assessment-1assessment-2)具有:
    • 讀訪問掌握
    • 到具有相同 名稱作爲用戶分支讀/寫訪問(例如assessment-1
    • 到其他分支沒有訪問。

我們要使用純git的(和ssh)沒有像gitlab或github上的犯規需要此任務的任何版本控制GUI服務器。

編輯:要說清楚:讀寫控制更重要的是寫控制。 (除了主人)。

+0

任務*不*需要某種應用程序的管理權限,因爲掛鉤'git'本身並不知道任何有關「用戶」或「訪問控制」的內容。像Gitlab這樣的工具可以完全解決你的問題,如果你不喜歡它,除了用它來管理SSH密鑰,你甚至不需要與Web UI進行交互。 – larsks

+0

但是,如果你想開發自己的解決方案,很久以前我寫了答案[這裏](https://stackoverflow.com/a/28402532/147356)和[這裏](https://stackoverflow.com/a/8248062/147356)和[這裏](https://stackoverflow.com/a/40454688/147356)處理類似的問題。 – larsks

+0

我們在我們公司使用gitlab enterprise,我認爲這些分支保護是企業功能的一部分。但通過我們的企業gitlab運行幾百名評估候選人需要大量用於企業服務器的用戶許可證。我也不想設置ssh密鑰。我想盡可能讓用戶儘可能簡單,但代碼不應公開,其他人可以複製它的解決方案。 – Tobi

回答

2

您無法通過git的內置功能滿足這些要求。訪問控制留給主機環境。

您可以僞造某種級別的寫入權限(通過使用簽名提交和掛鉤來拒絕違反授權規則的推送),但可能不完全符合您的要求;而有限的閱讀權限是正確的;你基本上必須使用單獨的回購。

您可以編寫自己的服務器來執行訪問控制,也可以使用現有的服務器;但是你對現有主機軟件的描述(暗示它的主要功能是提供一個GUI)是錯誤的;並且你的斷言你的任務不需要一個是不正確的,因爲訪問控制是任務的一部分。

0

我現在已經完成:

  • 克隆一箇中央存儲庫
  • 條除主任何分支機構
  • 重命名大師與分支名用戶
  • 副本存儲庫中的一些掛鉤
  • 給出正確的用戶讀取存儲庫的訪問權
  • 將用戶添加到允許運行特定s的組通過sudo CRIPT作爲另一個用戶
  • 寫推動分支到中央存儲庫的用戶的一推,它的存儲庫