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只有读操作权限,而没有写操作。