31.3.3 定义用户组和授权

下面的两个示例小节定义了两个用户组,并且用到了路径变换的指令。


1 [group ossxp-admin]

2 members=@gitosis-admin jiangxin

3 admin=ossxp/**

4 read=gistore/*

5 map admin redmine-*=ossxp/redmine/\1

6 map admin ossxp/redmine-=ossxp/(redmine-.):ossxp/redmine/\1

7 map admin ossxp/testlink-=ossxp/(testlink-.):ossxp/testlink/\1

8 map admin ossxp/docbones=ossxp/(docbones.):ossxp/docutils/\1

9

10 [group all]

11 read=ossxp/**

12 map read redmine-*=ossxp/redmine/\1

13 map read testlink-*=ossxp/testlink/\1

14 map read pysvnmanager-gitsvn=mirrors/pysvnmanager-gitsvn

15 map read ossxp/redmine-=ossxp/(redmine-.):ossxp/redmine/\1

16 map read ossxp/testlink-=ossxp/(testlink-.):ossxp/testlink/\1

17 map read ossxp/docbones=ossxp/(docbones.):ossxp/docutils/\1

18 repositories=/gitroot


在上面的示例中,演示了授权指令及Gitosis特色的map指令。

第1行,定义了用户组@ossxp-admin。

第2行,设定该用户组包含用户jiangxin及用户组@gitosis-admin的所有用户。

第3行,设定该用户组具有创建及读写与通配符ossxp/**匹配的版本库的权限。两个星号匹配任意字符,包括路径分隔符(/)。此功能属于笔者扩展的功能。

第4行,设定该用户组可以只读访问gistore/*匹配的版本库。一个星号匹配任意字符,路径分隔符(/)除外。此功能也属于笔者扩展的功能。

第5行,是Gitosis特有的版本库名称重定位功能。

即对redmine-*匹配的版本库,经过名称重定位,在名称前面加上ossxp/remdine。其中\1代表匹配的整个版本库名称。

用户组@ossxp-admin的用户对于重定位后的版本库具有admin(创建和读写)的权限。

第6行,是我扩展的版本库名称重定位功能,支持正则表达式。

等号左边的名称进行通配符匹配,匹配后,再经过右侧的一对正则表达式进行转换(冒号前的用于匹配,冒号后的用于替换)。

第10行,使用了内置的@all用户组,因此不需要通过members设定用户,因为所有用户均属于该用户组。

第11行,设定所有用户均可以只读访问ossxp/**匹配的版本库。

第12~17行,对特定路径进行映射,并分配只读权限。

第18行,设置版本库的根路径为/gitroot,而非默认的版本库根路径。