Oct 10, 2010

gitosis权限设置

通过gitosis搭建git服务器可以参考 http://ox0spy.blogspot.com/2010/10/setting-up-gitosis-on-ubuntudebian.html.

下面看下gitosis权限设置
gitosis有组(group)和成员(members), 权限就是对repository的访问限制.
有两个关键字修饰 repository ,一个是 writable, 一个是 readonly.
writable 意思是,对这个repository 有写权限
readonly 是, 对这个repository 只有读权限

最常见的例子:
[group gitosis-admin]
writable = gitosis-admin   # 注意,后面不要加 .git
members = ox0spy@lucid

这三句话是啥意思呢?
第1句,定义一个组, 名字为 gitosis-admin
第2句,  writable = 后面跟的是仓库名, 只是这个仓库名是去掉.git的,所以, 我们在 git clone 时,要自己加上 .git,如下:
$ git clone gitosis@localhost:gitosis-admin.git  # 注意最后的 .git
writable 后面可以跟很多个仓库名, 他们以whitespace分开, 一般以空格分隔,如下:
writable = gitosis-admin android mytest
第3句, members 说明这个组的成员, 成员名是 username@hostname , @hostname 不能去,否则会报错.
成员之间也通过 whitespace 分隔,通常用空格分隔.

可以发现,成员属于某个组, 而对repository的访问权限是通过组控制的.
这样的话,如果同一个repository,想让某些用户只能读,不能写,就必须新建一个组, 下面就看下怎么实现这个功能.
[group test]  # 该组用户可写
members = ox0spy@lucid lfs@debian
writable = mytest

[group test_ro] # 该组用户只读
members = toor@ubuntu
readonly = mytest              # 只读,这里是readonly 而不是 readable

这样,toor@ubuntu 就只能对 gitosis@Your-server:mytest.git 进行读

members 可以包含其他组的所有成员
[group member_test]
writable = memberTest
readonly = mytest
members = ox0spy@lucid @test
# 这里的 @test 就是上面 test组的所有成员 (ox0spy@lucid lfs@debian)

最后,要说的是, 一个组可以只有 members, 没有 writable 和 readonly,如下:
[group another_group]
members = monkey@abc cow@gentoo

这个组只是为了被其他组包含而定义.

No comments:

Post a Comment

您的评论将使我blog更有动力~