Permissions
如何在一台機器上與多個使用者共享一個 Git 儲存庫?
我在登台伺服器上有一個 Git 儲存庫,多個開發人員需要能夠拉到該儲存庫。
git-init
似乎有一個非常接近我正在尋找的標誌:--shared
,除了我希望多個人也可以拉到該儲存庫。的標誌做一些完全不同git-clone
的事情。--shared
更改現有儲存庫權限的最簡單方法是什麼?
權限是一種害蟲。
基本上,您需要確保所有這些開發人員都可以寫入 git 儲存庫中的所有內容。
跳至 New-Wave 解決方案,了解授予一組開發人員編寫能力的卓越方法。
標準解決方案
如果您將所有開發人員放在一個專門創建的組中,原則上您可以這樣做:
chgrp -R <whatever group> gitrepo chmod -R g+swX gitrepo
然後
umask
將使用者更改為002
,以便創建具有組可寫權限的新文件。這方面的問題很多。如果您使用的發行版假定
umask
為022
(例如有一個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(第二行)。
希望這能讓你上路。