推動時要使用特定的權限設置,我想在一個共享目錄下創建一個裸git
貯存庫,讓多個人(他們都是一個特定的UNIX組)可以訪問它。如何強制混帳通過ssh
在創建資源庫後,所有的文件和目錄由創建用戶(creator
)擁有和組(group
)擁有,但授予相同的權限,以group
並給大家。之後遞歸充分權限,所屬組,並設置setgid位上的目錄(這不是用戶的主要組,所以它不會被默認使用)庫的文件系統結構如下:
TREE PERMISSIONS OWNER GROUP
repo drwxrws--- creator group
| config -rw-rw---- creator group
| description -rw-rw---- creator group
| HEAD -rw-rw---- creator group
| hooks drwxrws--- creator group
| info drwxrws--- creator group
| objects drwxrws--- creator group
| refs drwxrws--- creator group
當有人推和git
創建一個新的文件,主人總是設置爲推動用戶和權限默認-rw-r--r--
(或drwxr-xr-x
),使該組的其他成員無法覆蓋這些文件後。例如,如果user1
推一個git
對象,其哈希以00開頭的目錄結構現在看起來是這樣的:
TREE PERMISSIONS OWNER GROUP
repo drwxrws--- creator group
| config -rw-rw---- creator group
| description -rw-rw---- creator group
| HEAD -rw-rw---- creator group
| hooks drwxrws--- creator group
| info drwxrws--- creator group
| objects drwxrws--- creator group
| | 00 drwxr-sr-x user1 group
| | | (long name) -rw-r--r-- user1 group
| refs drwxrws--- creator group
,現在沒有其他用戶可以把將被存儲在repo/objects/00
對象,因爲他們不有權寫入該目錄。
我怎麼能強迫git
做出新的文件組可寫?
我認爲你需要在每個用戶的'.profile'或等同於設置['umask'(http://man.cx/umask%281%29)。 – 1ace