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