git服务器搭建及gitolite权限管理

转自:http://blog.csdn.net/redstarofsleep/article/details/45092135


我是在ubuntu和CentOS系统上分别搭建的Git服务器,大致过程都是相同的:

 

基本上都是通过软件源直接安装的

 

第一步,给服务器安装ssh服务(这个CentOS自带了)

[java]  view plain  copy
 print ?
  1. apt-get install ssh  

 

第二步,安装git

    ubuntu:

[java]  view plain  copy
 print ?
  1. apt-get install git  

    CentOS

[java]  view plain  copy
 print ?
  1. yum install git  

 

CentOS还要再多一步,因为CentOS默认的perl少了这个模块.

[java]  view plain  copy
 print ?
  1. yum install 'perl(Data::Dumper)'  

 

其实到这里为止就安装完了,git已经能用了,远程访问使用ssh协议,用linux的用户登录访问即可.

 

但是在实际的生产环境中可不能这么用,服务器的安全性没法保障,git的权限没法管理.要管理git的权限有很多种方法,可以自己配置一个专门的用户,然后为此用户设置多个多个公钥,并且设置这个账户只能通过git的shell来访问就可以了,通过linux自己的权限管理来控制此用户对文件的访问.大体的思路就是这样,其实也不是很复杂.但是git既然有专门的工具来控制权限,就再安装个工具吧,有两个工具,一个是gitosis另一个是gitolite.我这里用的是gitolite,下面开始安装gitolite.

首先确认下,系统上perl是否已经安装了,ubuntu应该是自带的,没有的话用apt-get install perl安装一下.

然后在服务器上创建一个用户git,按提示为用户设定密码.

[java]  view plain  copy
 print ?
  1. adduser git  

用户创建成功后切换到这个用户

[java]  view plain  copy
 print ?
  1. su - git  

然后拷贝ssh公钥到服务器上,生成密钥的工具很多,xshell,git客户端都可以.或者用系统自带的ssh-keygen命令

[java]  view plain  copy
 print ?
  1. ssh-keygen  

生成一对密钥,生成过程中可以设置一个密码,也可以不设置,生成完后,密钥在当前用户的.ssh目录下(/home/git/.ssh/),密钥一对,有两个文件id_rsa.pub和id_rsa. 以pub结尾的是公钥,另一个是私钥.把公钥考出来重命名为<yourname>.pub.

以上这些准备工作都做好之后,开始安装gitolite.

首先,通过git拷贝gitolite

[java]  view plain  copy
 print ?
  1. git clone git://github.com/sitaramc/gitolite  

然后到/home/git下创建一个bin目录,不创建的话是会报错的

[java]  view plain  copy
 print ?
  1. cd /home/git  
  2. mkdir bin  

进入刚刚拷贝的gitolite目录执行安装

 

[java]  view plain  copy
 print ?
  1. ./install -ln  
没有什么错误信息输出的话,安装就初步成功了,现在进入刚刚创建的bin目录,可以看到里面多了一个gitolite文件,然后执行

 

 

[java]  view plain  copy
 print ?
  1. cd /home/git/bin  
  2. gitolite setup -pk <yourpath>/<yourname>.pub  
这个个命令在服务器上创建了一个名为 gitolite-admin 的Git仓库。

 

现在你可以看到在git目录下多了一个repositories目录,这是git默认的仓库的路径,里面有两个仓库,一个是gitolite-admin,另一个是test.

 

至此,git以及gitolite就安装完成了

 

安装完成后,在本地工具里用刚刚的秘钥进行登录,拷贝gitolite-admin仓库到本地

[java]  view plain  copy
 print ?
  1. git clone git@<gitserver>:gitolite-admin  

克隆到本地后,打开gitolite-admin目录,可以看到conf和keydir两个目录. conf目录里是配置文件,keydir目录里是用户的公钥,打开keydir目录,可以看到刚才安装的时候导入的那个公钥,也就是现在登录的这个用户的公钥.如果需要添加用户,只要把他的公钥拷贝到keydir这个目录中即可,非常的简单.

 

然后打开conf目录下的gitolite.conf文件

刚开始这个文件可能是这样的:

[java]  view plain  copy
 print ?
  1. repo gitolite-admin  
  2.     RW+                 = scott  
  3.   
  4. repo testing  
  5.     RW+                 = @all  

repo是后面是项目名称,RW+是权限,scott是用户

 

例如下面这个配置文件:

首先是定义了两个组, 一个是admin管理员组,另一个是om项目组

然后看到repo om部分,定义了om项目的权限,整个项目是admin组的用户有读写权限,master分支是admin组的用户有读写权限,dev分支是om组用户有读写权限.如果需要分配只读权限的话分配一个R即可.

[java]  view plain  copy
 print ?
  1. @admin = abc  
  2. @om = abc bcd  
  3.   
  4. repo gitolite-admin  
  5.     RW+     =   abc  
  6.   
  7. repo testing  
  8.     RW+     =   @all  
  9.   
  10. repo om  
  11.     RW+     =   @admin  
  12.     RW+ master = @admin  
  13.     RW+ dev  =   @om  

 

这样就完成了一个简单的git服务器以及权限配置.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值