30.4 版本库授权案例
Gitolite的授权非常强大也非常复杂,因此从版本库授权的实际案例来学习是非常有效的方式。
30.4.1 对整个版本库进行授权
授权文件如下:
1 @admin=jiangxin
2 @dev=dev1 dev2 badboy jiangxin
3 @test=test1 test2
4
5 repo testing
6 R=@test
7 -=badboy
8 RW=@dev test1
9 RW+=@admin
说明:
用户test1对版本库具有写的权限。
第6行定义了test1所属的用户组@test具有只读权限。第8行定义了test1用户具有读写权限。Gitolite的实现是对读权限和写权限分别进行判断并汇总(并集),从而test1用户具有读写权限。
用户jiangxin对版本库具有写的权限,并能够强制推送。
第9行授权指令中加号(+)的含义是允许强制推送。
禁用指令,让用户badboy只对版本库具有读操作的权限。
第7行的指令以减号(-)开始,是一条禁用指令。禁用指令只在授权的第二阶段起作用,即只对写操作起作用,不会对badboy用户的读权限施加影响。
在第8行的指令中,badboy所在的@dev组拥有读写权限。但禁用规则会对写操作起作用,导致badboy只有读操作权限,而没有写操作。