首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

建立多人合作git仓库/git 仓库权限控制(SSH)

2013-11-01 
建立多人协作git仓库/git 仓库权限控制(SSH)转载文章请保留出处http://blog.csdn.net/defeattroy/article/

建立多人协作git仓库/git 仓库权限控制(SSH)

转载文章请保留出处  http://blog.csdn.net/defeattroy/article/details/13775499

git仓库是多人协作使用的,可以基于很多种协议,例如http、git以及ssh等。ssh最为安全方便,配置起来也比较容易,但是权限控制是一个问题,比如下面的场景由两个用户st都给一个仓库贡献代码,那么如果通过ssh协议clone/push的话,会在git仓库的服务端新创建一些文件,主要是objects下面(refs下面文件也会做修改),这些文件的属主和属组就是你这个用户创建一个文件默认的属主和属组,参考下面命令和输入

[core]        repositoryformatversion = 0        filemode = true        bare = true修改前=================================修改后[core]        repositoryformatversion = 0        filemode = true        bare = true        sharedRepository = 1


加这个参数的目的是git在objects目录下创建的目录的属性由

drwxr-xr-x 变成 drwxrwsr-x

注意组权限多了个w,但是r变成s了,这个是因为git通过setgid bit更改这个目录属性(chmod g+s),作用在目录上的setgid可让在该目录下创建的文件继承该目录的组属性,可以参考wikipedia关于setuid, setgid的介绍。

至此便可做到让多个人给仓库推送代码了。

如果那个兄弟先看了这个文章悔恨自己在建用户的时候没有考虑主属组,或者用户太多一个个改主属组,而代码目录权限都可以放开的话,那么可以将/home/git目录的权限放开,让所有用户都可以读写,同时在目录上加上setgit bit - sudo chmod g+s /home/git即可。


更多git协同仓库可参考:

http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository/


热点排行