Permissions

如何在一台機器上與多個使用者共享一個 Git 儲存庫?

  • February 18, 2020

我在登台伺服器上有一個 Git 儲存庫,多個開發人員需要能夠拉到該儲存庫。git-init似乎有一個非常接近我正在尋找的標誌:--shared,除了我希望多個人也可以拉到該儲存庫。的標誌做一些完全不同git-clone的事情。--shared

更改現有儲存庫權限的最簡單方法是什麼?

權限是一種害蟲。

基本上,您需要確保所有這些開發人員都可以寫入 git 儲存庫中的所有內容。

跳至 New-Wave 解決方案,了解授予一組開發人員編寫能力的卓越方法。

標準解決方案

如果您將所有開發人員放在一個專門創建的組中,原則上您可以這樣做:

chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo

然後umask將使用者更改為002,以便創建具有組可寫權限的新文件。

這方面的問題很多。如果您使用的發行版假定umask022(例如有一個users預設情況下包含所有人的公共組),這可能會在其他地方引發安全問題。遲早,某些事情會破壞您精心設計的權限方案,使 repo 無法執行,直到您獲得root訪問權限並修復它(即重新執行上述命令)。

新浪潮解決方案

一個更好的解決方案——雖然不太為人所知,並且需要更多的作業系統/工具支持——是使用 POSIX 擴展屬性。我最近才來這個地區,所以我在這裡的知識並不像它可能的那麼熱。但基本上,擴展的 ACL 是能夠在超過 3 個預設插槽(使用者/組/其他)上設置權限的能力。

因此,再次創建您的組,然後執行:

setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX

這將為組設置擴展 ACL,以便組成員可以讀取/寫入/訪問已經存在的任何文件(第一行);然後,還告訴所有現有目錄新文件應該應用相同的 ACL(第二行)。

希望這能讓你上路。

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