gitolite服务部署:

1,在git服务器端安装git并创建git用户。

yum install -y git

useradd git

2,生成gitolite的管理账户,这个账户也可以在git服务器端生成,也可以在自己的客户端生成。(为了防止人员离职,导致管理员丢失,建议在git服务器端生成。我这里是在git服务器端生成管理员用户的)

su - git

ssh-keygen

cp /home/git/.ssh/id_rsa.pub /tmp/admin.pub

多次回车,生成秘钥对,找到~/.ssh/id.rsa.pub 上传到git服务器的/tmp上,并命名为admin.pub

3,切换到git用户,并确保~/.ssh/authorized_keys文件为空或者不存在

rm -f ~/.ssh/authorized_keys

4,安装gitolite

git clone git://github.com/sitaramc/gitolite #下载gitolite软件

mkdir -p $HOME/bin #创建存放gitolite相关命令的目录

gitolite/install -to $HOME/bin #安装gitolite,如果执行这个报错,请先执行 yum install -y perl-Time-HiRes。

echo "PATH=$PATH:$HOME/bin" >> .bashrc #将gitolite命令加入环境变量中,建议退出终端,重新进入。

gitolite setup -pk /tmp/admin.pub #将客户端的用户配置为git的管理员,其实就是将admin.pub的公钥添加到authorized_keys里面去了。

5,查看~/.ssh/authorized_keys 里面是否已经有添加进去的公钥

cat ~/.ssh/authorized_keys

另外,安装完成后,我们可以在$HOME下看到一个repositories目录,里面有两个仓库,分别为gitolite-admin和testing,其中gitolite-admin为管理仓库。

6,克隆gitolite-admin仓库

cd /tmp

git clone git@127.0.0.1:gitolite-admin

进入gitolite-admin仓库,会看到两个目录,分别为keydir和conf,其中keydir目录用来管理用户,在其中可以看到默认有一个文件叫做admin.pub,正是我们之前生成的管理用户的公钥文件.

查看conf里面的配置文件:

[git@iz2ze0n2ws2p2jpw1i9fd4z conf]$ cat gitolite.conf
repo gitolite-admin
RW+ = admin repo testing
RW+ = @all

 

可以简单的发现 repo 定义仓库名

RW+ 表示权限 可读可写可强制更新

admin 表示admin用户,即admin用户可以对gitolite-admin这个仓库有可读可写可强制更新权限。

7,添加用户

添加用户其实蛮简单,只要在管理员克隆下来的gitolite-admin中,将用户添加到conf/gitolite.conf中,并将要添加用户的pub文件放入keydir中即可,然后push到git服务器中即可。

我这里添加一个xiaobai用户,并设置为管理员。

首先在原来的admin用户下克隆代码(上面已经克隆了):

cd /tmp/gitolite-admin

vim /conf/gitolite.conf

上传xiaobai用户的公钥到keydir中

执行git相关命令,将变化的内容推送到git服务器上。

git add .

git commit -m 'add xiaobai user to admin'

git push

  

切换到小白账户,测试创建用户是否成功,克隆代码

git clone git@git服务器地址:gitolite-admin

如下

8,添加仓库,主要是更改gitolite.conf文件,定义1个repo即可。

9,权限说明

常用的配置:

,定义组

@admin=xiaobai  xiaoa  #定义一个admin组,组员有xiaobai,xiaoa

,定义一个仓库

repo spider

,@all 所有用户

repo spider

RW = @all  #表示所有用户对spider仓库有读写权限

具体的可以参考如下:

 @admin = breezey chenliang
repo gitolite-admin
RW+ = breezey
repo ossxp/.+
C = @admin
RW = @all
repo testing
RW+ = @admin
RW master = junio
RW+ pu = junio
RW cogito$ = pasky
RW bw/ = linus
- = somebody
RW tmp/ = @all
RW refs/tags/v[-] = junio
我们先对该示例文件作一个简单的说明,以方便大家对授权文件有一个基本的了解:
第1行定义了一个admin的组,该组里包含两个用户,分别是breezey chenliang
第2-3行定义了一个版本库gitolite-admin,并且指定breezey用户对gitolite-admin仓库拥有读(R),写(W)和强制更新(+)的权限
第4行通过正则表达式定义了一组版本库,即ossxp目录下的所有版本库
第5行定义admin组的用户可以在ossxp目录下创建版本库
第6行定义所有用户对ossxp目录下的版本库拥有读写的权限,但不能强制更新
第7行定义了一个版本库testing
第8行定义了admin组用户对testing库的所有分支和tag拥有读、写、重置、添加、删除的权限
第9行定义junio用户对master分支有读写的权限,还包括以master开头的所有分支。
第10行定义junio用户对pu分支拥有读写,重置,添加,删除的权限,还包括以pu开头的所有分支
第11行定义pasky用户对cogito分支拥有读写的权限,仅此分支,精确匹配
第12行定义linus用户对bw/拥有读写的权限
第13行定义somebody用户对testing仓库有写的权限
第14行定义所有用户对tmp/拥有读写的权限
第15行定义junio可以读写任意tag,包括以v加上数字开头的tag 组的定义:
@admin = breezey chenliang
@user = @admin @staff user1
版本库的定义:
repo ossxp/.+ #匹配ossxp目录下的所有版本库
repo myrepo.$ #匹配以myrepo.结尾的版本库
repo sandbox/test1 #创建sandbox下的test1库
授权关键字:
C:
C代表创建。仅在符版本库授权时可以使用。用于指定谁可以创建与通配符匹配的版本库。
R,RW,RW+:
R为只读,RW为读写,RW+为读写及强制push
RWD,RW+D:
只有当授权指令中定义了正则引用(正则表达式定义的branch、tag等),才可以使用该授权指令。其中 D 的含义是允许删除和正则引用匹配的引用(branch or tag)
RWCD,RW+CD:
只有当授权指令中定义了正则引用(正则表达式定义的branch、tag等),才可以使用该授权指令。其中 C 的含义是允许创建和正则引用匹配的引用(branch or tag),D的含义是允许删除和正则引用匹配的引用(branch or tag )
-:
减号(-)是一条禁用指令,只对写操作起作用,不会对用户的读操作施加影响。

参考:https://www.linuxidc.com/Linux/2014-02/96991.htm

最新文章

  1. Windows10-UWP中设备序列显示不同XAML的三种方式[3]
  2. Swift - 界面的跳转模式
  3. 转:MVC 数据验证
  4. Asp.net MVC 的八个扩展点
  5. Swift 用Delegate和Block实现回调的Demo
  6. 【iCore3 双核心板】例程三十二:UART_IAP_ARM实验——更新升级STM32
  7. Tortoise 下修改服务器路径(Relocate与Switch)
  8. css3学习总结1--CSS3选择器
  9. JSF 2 password example
  10. XML的基本操作
  11. Hibernate_10_继承的例子_单表
  12. Linux无法连接上127.0.0.1,拒绝连接,更新时提示无法下载,无法正常使用apt-get update
  13. Netty事件监听和处理(下)
  14. windows系统调试MapReduce程序
  15. Kali Linux Vmware虚拟机(新手)安装
  16. Java垃圾回收器的工作原理
  17. C# 动态输出Dos命令执行结果
  18. 闭包自由变量引用对象的问题 http://bbs.pythontab.com/thread-4266-1-1.html
  19. matlab M文件分析工具使用(Code Analyzer and Profiler)
  20. linux常见命令ps的应用

热门文章

  1. w7 python35 输出中文乱码解决
  2. 导入项目的时候报错Error:Could not find com.android.support.constraint:constraint-layout:1.0.0-alpha7
  3. centos 7 linux系统默认ftp安装配置和部署(详细讲解)
  4. C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢?
  5. leetcode — jump-game-ii
  6. win32线程
  7. JavaScript基础回顾一(类型、值和变量)
  8. 第1章 ssh命令和SSH服务详解
  9. MySQL高可用之组复制(1):组复制技术简介
  10. IdentityServer4 中文文档 -12- (快速入门)添加外部认证支持