zoukankan      html  css  js  c++  java
  • gitolite的部署

    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,权限说明

    常用的配置:
    
    1,定义组
    
    @admin=xiaobai  xiaoa  #定义一个admin组,组员有xiaobai,xiaoa
    
    
    
    2,定义一个仓库
    
    repo spider
    
    
    
    3,@all 所有用户
    
    repo spider
    
    RW = @all  #表示所有用户对spider仓库有读写权限

    具体的可以参考如下:

    1 @admin = breezey chenliang
    2 repo gitolite-admin
    3 RW+ = breezey
    4 repo ossxp/.+
    5 C = @admin
    6 RW = @all
    7 repo testing
    8 RW+ = @admin
    9 RW master = junio
    10 RW+ pu = junio
    11 RW cogito$ = pasky
    12 RW bw/ = linus
    13 - = somebody
    14 RW tmp/ = @all
    15 RW refs/tags/v[0-9] = 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

  • 相关阅读:
    三国杀三字经
    window.open参数表
    捕获FormRequest安全错误的类
    SqlServer之Convert 函数应用格式化日期
    数据库区分大小写的问题
    时间字符串的比较
    char码值对应列表大全
    web.config 连接字符串 加密解密,代码方式
    关于app_offline.htm的用法
    关闭窗口的时候弹出确认对话框
  • 原文地址:https://www.cnblogs.com/lin1/p/9180784.html
Copyright © 2011-2022 走看看