Skip to content

Commit 887cc4f

Browse files
committed
New blog fix GotGit wildrepo setperms/getperms error.
1 parent 45d44cc commit 887cc4f

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
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";

0 commit comments

Comments
 (0)