File tree Expand file tree Collapse file tree 1 file changed +66
-0
lines changed Expand file tree Collapse file tree 1 file changed +66
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ layout : post
3
+ title : " Gitolite 通配符版本库自定义授权"
4
+ ---
5
+
6
+ 每个人创建自己的版本库
7
+ -----------------------
8
+
9
+ 授权文件如下:
10
+
11
+ 1 @administrators = jiangxin admin
12
+ 2
13
+ 3 repo users/CREATOR/[a-zA-Z].*
14
+ 4 C = @all
15
+ 5 RW+ = CREATOR
16
+ 6 RW = WRITERS
17
+ 7 R = READERS @administrators
18
+
19
+ 关于授权的说明:
20
+
21
+ * 第4条指令,设置用户可以在自己的名字空间( ` /usrs/<userid>/ ` )下,自己创建版本库。例如下面就是用户 ` dev1 ` 执行 ` git push ` 命令在Gitolite服务器上自己的名字空间下创建版本库。
22
+
23
+ dev1$ git push git@server:users/dev1/repos1.git master
24
+
25
+ * 第5条指令,设置版本库创建者对版本库具有完全权限。
26
+
27
+ 即用户 ` dev1 ` 拥有对其自建的 ` users/dev1/repos1.git ` 拥有最高权限。
28
+
29
+ * 第7条指令,让管理员组 ` @administrators ` 的用户对于 ` users/ ` 下用户自建的版本库拥有读取权限。
30
+
31
+ 那么第6、7条授权指令中出现的 ` WRITERS ` 和 ` READERS ` 是如何定义的呢?实际上这两个变量可以看做是两个用户组,不过这两个用户组不是在Gitolite授权文件中设置,而是由版本库创建者执行 ` ssh ` 命令创建的。
32
+
33
+ 版本库 ` users/dev1/repos1.git ` 的创建者 ` dev1 ` 可以通过 ` ssh ` 命令连接服务器,使用 ` setperms ` 命令为自己的版本库设置角色。命令 ` setperms ` 的唯一一个参数就是版本库名称。当执行命令时,会自动进入一个编辑界面,手动输入角色定义后,按下 ` ^D ` (Ctrl+D)结束编辑。如下所示:
34
+
35
+ dev1$ ssh git@server setperms users/dev1/repos1.git
36
+ READERS dev2 dev3
37
+ WRITERS jiangxin
38
+ ^D
39
+
40
+ 即在输入 setperms 命令后,进入一个编辑界面,输入 ^D(Ctrl+D)结束编辑。也可以将角色定义文件保存到文件中,用 ` setperms ` 加载。如下:
41
+
42
+ dev1$ cat > perms << EOF
43
+ READERS dev2 dev3
44
+ WRITERS jiangxin
45
+ EOF
46
+
47
+ dev1$ ssh git@server setperms users/dev1/repos1.git < perms
48
+ New perms are:
49
+ READERS dev2 dev3
50
+ WRITERS jiangxin
51
+
52
+ 当版本库创建者 ` dev1 ` 对版本库 ` users/dev1/repos1.git ` 进行了如上设置后,Gitolite在进行授权检查时会将 ` setperms ` 设置的角色定义应用到授权文件中。故此版本库 ` users/dev1/repos1.git ` 中又补充了新的授权:
53
+
54
+ * 用户 ` dev2 ` 和 ` dev3 ` 具有读取权限。
55
+
56
+ * 用户 ` jiangxin ` 具有读写权限。
57
+
58
+ 版本库 ` users/dev1/repos1.git ` 的建立者 ` dev1 ` 可以使用 ` getperms ` 查看自己版本库的角色设置。如下:
59
+
60
+ dev1$ ssh git@server getperms users/dev1/repos1.git
61
+ READERS dev2 dev3
62
+ WRITERS jiangxin
63
+
64
+ 如果在用户自定义授权中需要使用 ` READERS ` 和 ` WRITERS ` 之外的角色,管理员可以通过修改 ` gitolite.rc ` 文件中的变量 ` $GL_WILDREPOS_PERM_CATS ` 实现。该变量的默认设置如下:
65
+
66
+ $GL_WILDREPOS_PERM_CATS = "READERS WRITERS";
You can’t perform that action at this time.
0 commit comments