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,而非默认的版本库根路径。