2014-05-11 42 views
2

推動時要使用特定的權限設置,我想在一個共享目錄下創建一個裸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做出新的文件組可寫?

+0

我認爲你需要在每個用戶的'.profile'或等同於設置['umask'(http://man.cx/umask%281%29)。 – 1ace

回答

1

檢查是否配置core.sharedRepository可以幫助你的目標回購:

group(或true),該庫是多個用戶之間的組中取得共享(確保所有的文件和對象是組-writable)。

但是,當涉及到ACL(訪問控制級別)使用Git SSH,沒有比這更容易或精確到位比gitolite(這是一個authorization layer)。