`
逍遥一狂
  • 浏览: 188206 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

企业级Git Server服务器架设,使用Gitolite管理权限

 
阅读更多

1. 在服务器上创建Git管理员帐号git

$sudo adduser git

 

2. 在客户端创建管理员公匙(Unix/Linux)

$ssh-keygen

然后一路回车,提示成功生成2个文件

~/.ssh/id_rsa

~/.ssh/id_rsa.pub (公匙)

 

3. 在客户端将公匙上传到服务器上管理员的主目录(没装SSH就发邮件吧:),并重命名为git.pub

$scp ~/.ssh/id_rsa.pub git@YOUR_SERVER:/home/git/git.pub

 

4. 在服务器上安装git-core

$sudo apt-get install git-core

 

5. 在服务器上安装Gitolite,使用账户git打开shell,否则会找不到命令

$git clone git://github.com/sitaramc/gitolite
$cd gitolite
$src/gl-system-install
$gl-setup ~/git.pub

 

6. 客户端clone一个管理库,修改里面的文件,就可以管理仓库、用户、组、权限等等内容了

$git clone git@YOUR_SERVER:gitolite-admin
 

 

关于Gitolite的权限管理,下面是一些入门知识

翻译了部分官方文档

http://sitaramc.github.com/gitolite/doc/gitolite.conf.html

 

syntax 语法

通常情况下,语法里都是以空格分隔的; 不使用逗号分号等符号.

注释跟Shell注释一样

用户名 和 仓库名 尽量简单; 必须以字母和数字开头, 后面可以包含._或 -.

用户名可以跟字符@并加域名,域名至少含有1个. (也就是允许使用邮箱地址做用户名). 仓库名可以含有斜线/(这可以很方便地将仓库组织成数状结构)

 

continuation lines 续行

没有续行 -- gitolite不处理C语言里反斜线\转译的任何特殊的新行. 但是"群组"章节会告诉你如何把一大串的名称定义成多行.

 

include files 文件包含

Gitolite允许把配置放在多个文件里,使用的时候很方便地包含到到主文件里.

include     "foo.conf"

上面代码将把同目录下的foo.conf包含进主配置文件. 也可以使用绝对路径, 不过明智的话应该避免那样做!

也可以使用通配符,如:

include     "*.conf"

这样会包含主配置所在目录下所有的".conf"文件.

处理过的文件都会略过,并报个警告.

 

basic access control 基本访问控制

下面是一组最基本的规则:

repo    gitolite-admin
        RW+     =   sitaram

repo    testing
        RW+     =   @all

repo    gitolite simplicity
        RW+     =   sitaram dilbert
        RW      =   alice ashok
        R       =   wally

意思应该很容易猜到了:

  • R表示读权限
  • RW表示读写权限, 不能rewind
  • RW+表示读写权限, 允许rewind

groups 群组

Gitolite允许你定义仓库groups,用户groups,甚至是refexes groups. group在语义上类似C语言里的#define(但不是语法上). 下面是每种group的例子:

@oss_repos  =   gitolite linux git perl rakudo entrans vkc
@staff      =   sitaram some_dev another-dev
@important  =   master$ QA_done refs/tags/v[0-9]

group定义语法很简单:

@groupname = [one or more names]

 

group可以累积值,例如:

@staff      =   sitaram some_dev another-dev
@staff      =   au.thor

跟下面效果相同

@staff      =   sitaram some_dev another-dev au.thor

 

这比续行方便多了,可以在任何地方增加group. 很多人从数据库里生成gitolite.conf, 能做这种事情是非常有用的.

 

Groups可以包含别的groups, 被包含的group会展开他的当前值:

@staff      =   sitaram some_dev another-dev    # line 1
@staff      =   au.thor                         # line 2
@interns    =   indy james                      # line 3
@alldevs    =   bob @interns @staff             # line 4

"@alldevs" 展开了7个用户名. 然而要记住配置文件只顺序解析1次,所以后面给group增加的用户不影响前面的结果. 例如把第2行移动到最后, "@alldevs"就只有6个用户名了.

 

特殊的 @all group

有个特殊群组叫@all

作为用户名使用时,包含了所有通过身份验证的用户; 前面你已经看到例子了.

作为仓库名使用时, 包含所有仓库.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics