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