转:http://blog.sina.com.cn/s/blog_4b5039210102e3s1.html
按照前面的步骤安装好gitlite就可以开始使用,下面就体验下gitolite强大的权限管理功能。
4. 配置权限
配置权限的过程其实就是管理员使用管理员的pubkey 把gitolite-admin克隆到本地,做一些配置修改,然后push到git服务器的过程。
一定要用git-admin的pubkey。因为前面已经做了config,所以当连接git-server这台设备时,用的就是git-admin的public key。
!!!注意,上面的命令一定要是git clone git-server:gitolite-admin,
而不是:git clone git-server:/home/git/repositories/gitolite-admin
更不是:git clone git-server:gitolite-admin.git
假如你运行git clone git-server:gitolite-admin失败,例如:
上面的原因很有可能是因为git server 的 user 主目录下的 .ssh/authorized_keys 文件,在安装gitolite之前,已经有了你的pubkey,可以把删除掉,只留”#gitolite start” 和 “gitolite-end”之间的内容。
clone完后会有个新的目录gitolite-admin,里面有两个文件夹conf和keydir,第一个目录中包含的是配置文件,里面就是记录权限配置的地方,第二个目录中则包含所有用户的pub key。
penxiao@ubuntu:~/git/gitolite-admin$ ls
conf
penxiao@ubuntu:~/git/gitolite-admin$
现在我们打开配置文件,按照我们的权限配置需要进行设置
penxiao@ubuntu:~/git$ vim gitolite-admin/conf/gitolite.conf
文件内容如下很简单:
repo gitolite-admin
repo testing
首先 gitolite-admin只有admin有读写权限,其他人都不能读写
另外一个代码库testing是所有人都可以访问
下面我们试几个操作
首先新用户不需要知道git-server里git用户的SSH密码,所以他们登录不了shell。管理员只需要收集普通用户的public_key,并按照user_id.pub命名好。然后copy到keydir目录中。通过git push回到git-server中即可。
在git server上看
三个用户的pub key已经加好了。
此时user1,2,3能不能ssh到git server的shell呢,答案是不能,他们只能通过git访问git server上他们具有权限的一些代码仓库,当用户试图ssh的时候,会提示错误如下:
比如之前说的testing这个代码库是@all的权限,也就是任何人都有读写的权限。
(2) 新建代码仓库repository
只需要在gitolite.conf里添加好对应的名字和权限,然后push回git server即可,server端会自动帮你创建一个空的bare repository。
如上所示,我们首先建了一个用户组叫test,成员有user1,user2;
新建一个叫test1的代码仓库, 用户组test具有RW+权限,user3只具有R权限。
add,commit,push完以后,在server上可以看到。
多了一个叫test的代码仓库,而且权限也是和配置文件里的权限一致。
当然giolite的权限管理有更多强大的功能,这里就不一一实验了。
更多功能请参考官方文档:
http://gitolite.com/gitolite/master-toc.html