Linux
帶有裸共享倉庫的 Linux 上的 git 權限錯誤
我有一個已打開此選項的裸中央倉庫:
git config core.sharedRepository true
出於某種原因,這台 CentOS 機器上的其他使用者從中央儲存庫中拉/推時,在推送到有人已經推送的分支時總是遇到權限錯誤。
我查看了 objects 目錄並意識到首先推送的人將他們的使用者名設置為所有者和組。
我已經將其設置為所有使用者都屬於“開發人員”組,然後 chgrp -R 裸倉庫屬於“開發人員”的組所有權,但這還沒有解決問題。
還有其他建議嗎?
更多資訊:
這就是我推動時發生的情況:
[dave@localhost wd]$ git push Counting objects: 5, done. Compressing objects: 100% (2/2), done. error: insufficient permission for adding an object to repository database ./objects fatal: failed to write object error: pack-objects died of signal 13 error: failed to push some refs to '/gitrepos/repo.git'
正如您所看到的,在裸中央倉庫的 objects 文件夾內的權限具有屬於另一個使用者 jane 的不同權限的目錄(為了便於閱讀,該列表已被縮短):
[dave@localhost objects]$ ls -la total 248 drwxrwxr-x 62 root developers 4096 Dec 13 15:37 . drwxrwxr-x 9 root developers 4096 Dec 13 15:34 .. drwxrwxr-x 2 root developers 4096 Dec 12 16:05 01 drwxrwxr-x 2 root developers 4096 Dec 12 16:05 2f drwxrwsr-x 2 jane jane 4096 Dec 13 15:37 30 drwxrwxr-x 2 root developers 4096 Dec 12 16:19 33 drwxrwxr-x 2 root developers 4096 Dec 12 16:05 39 drwxrwxr-x 2 root developers 4096 Dec 12 16:19 6c drwxrwxr-x 2 root developers 4096 Dec 12 16:05 89 drwxrwsr-x 2 jane jane 4096 Dec 13 15:37 8b drwxrwxr-x 2 root developers 4096 Dec 13 05:41 8e drwxrwxr-x 2 root developers 4096 Dec 12 16:19 90 drwxrwxr-x 2 root developers 4096 Dec 12 14:32 info drwxrwxr-x 2 root developers 4096 Dec 12 14:32 pack
您需要確保使用者使用 002 作為他們的 umask,以便創建的新文件是 g+w,或者您需要使用擴展 acls 為在此儲存庫中創建的新文件設置預設權限。umask 是您在環境中設置的東西,可能在 .bashrc 或 /etc/profile 或一些此類啟動文件中,但它會影響在任何地方創建的文件。您不能將 umask 本地化到一個特定目錄。如果您需要在特定目錄中進行此行為,則可能必須使用擴展文件系統 ACL,這需要使用 acl 選項重新掛載文件系統並使用 setfacl 更改預設 acl。在任何一種情況下,您都應該使所有目錄組歸“開發人員”和 chmod g+s 所有,這將使新目錄/文件繼承該組所有權