Linux

帶有裸共享倉庫的 Linux 上的 git 權限錯誤

  • February 3, 2017

我有一個已打開此選項的裸中央倉庫:

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 所有,這將使新目錄/文件繼承該組所有權

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