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