zoukankan      html  css  js  c++  java
  • git+gitolite 如何实现权限控制

    前言

    git+gitolite是一个很不错的代码权限管控方式,下面是详细的配置步骤。

    一、安装git

    首先要弄清楚,git是分本地以及远端的,这里以我使用的windows电脑为例(Mac不需要安装),

    现在Git服务端安装好Git,大部分的是系统自带的。

    [root@uat1 admin]# rpm -qa|grep git
    libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64
    git-1.7.1-9.el6_9.x86_64

    然后需要安装windows本地的git(这里自行百度,很简单),出现我的画面就说明你成功了。

    二、获取本地公钥

    在git客户端(也就是你的windows电脑,以下使用名词客户端),执行下面的命令:

    ssh-keygen -t rsa

    紧接着连续回车三次,你的公钥就会自动生成,下面是查找公钥的方法。

    Murry@Savior MINGW64 ~
    $ cd ~/.ssh/
    
    Murry@Savior MINGW64 ~/.ssh
    $ ls
     id_rsa.pub  id_rsa  known_hosts

    你会生成两个文件,一个带.pub的就是公钥,另一个不带的就是私钥。

    三、在服务端安装gitolite

    开始安装gitolite

     首先需要安装一个git用户,用这个用户来进行安装。

    [root@uat1 ~]# useradd git (增加用户)
    [root@uat1 ~]# su - git  (切换用户)
    [git@uat1 ~]$ pwd  (查看位置)
    /home/git

    开始下载gitolite

    [git@uat1 ~]$ git clone https://github.com/sitaramc/gitolite

    紧接着,开始安装gitolite

    [git@uat1 ~]$ mkdir /home/git/bin  (创建bin目录)
    [git@uat1 ~]$ gitolite/install -to /home/git/bin  (将gitolite安装到目录下)
    [git@uat1 ~]$ cd bin/  (进到目录)
    [git@uat1 bin]$ ls  (查看内容)
    commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF

    这样就可以看到gitolite相关的命令了。

    四、配置gitolite的管理员

    这里提一下,gitolite的管理员可以是自己的一台电脑也可以是一台服务器,这里配置为自己的电脑。

    首先将之前获取到的公钥,也就是id_rsa.pub发送到git的服务端(也就是服务器上)。

    scp id_rsa.pub user@ip地址:/tmp  (这里会需要输入服务器密码)

    服务器接收到以后,将文件名改为admin.pub

    [git@uat1 tmp]$ mv id_rsa.pub admin.pub

    接着就开始用管理员的公钥来进行安装gitolite

    [git@uat1 ~]$ /home/git/bin/gitolite setup -pk admin.pub

    紧接着你就可以看到生成了两个文件。

    /home/git/repositories/gitolite-admin.git
    /home/git/repositories/testing.git

    第一行的是管理者的git仓库,第二行的就是测试仓库。

    五、如何进行权限的管控

    开始生成管理员的管理仓库。

    [git@uat1 ~]$ git clone user@ip地址:gitolite-admin

    进入目录下就可以看到两个文件。

    Murry@Savior MINGW64 ~/.ssh/gitolite-admin (master)
    $ ls
    conf/  keydir/

    这两个目录咱们分别来看。

    进入conf/了解一下

    Murry@Savior MINGW64 ~/.ssh/gitolite-admin (master)
    $ cd conf/
    
    Murry@Savior MINGW64 ~/.ssh/gitolite-admin/conf (master)
    $ ls
    gitolite.conf

    可以看到gitolite.conf这个文件,它就是用来管理git的权限文件,来打开看一下内容。

    Murry@Savior MINGW64 ~/.ssh/gitolite-admin/conf (master)
    $ cat gitolite.conf
    repo gitolite-admin
        RW+     =   gitadmin
     repo testing

    在这里我们就可以清楚地看到gitolite是怎么管理权限的 ,repo作为仓库的名字,而下面就是

    拥有权限的人,这里RW就是可读可写

    那么问题就来了,仓库和权限者他是怎么定义的呢

    这里仓库其实只要你写了名字他就会自动生成,而拥有权限者的名字,就用到了keydir/目录

    这个目录下的文件就是拥有者的公钥,.pub前面的名字就是这里的名字

    六、更改后如何从本地提交到远端

    关于这个问题只需要几个git基本命令即可

    $ git add .
    
    $ git commit -m "注释内容"
    
    $ git push

    只需要这三步操作,如果对git命令不了解建议先了解一下

    至此,我们就实现了gitolite的权限管控

  • 相关阅读:
    iOS 适配iPhoneX上tableHeaderView发生了高度拉伸、UI出现的空白间距
    无线加密WEP、WPA、WPA2及TKIP、AES
    字符替换操作
    jQuery版本升级问题汇总
    ipv6服务器及环境搭建
    git删除某次提交操作
    五种IO模型
    jQuery1.6以上attr改用prop
    线程创建pthread_create用法(转)
    网络字节序与主机字节序
  • 原文地址:https://www.cnblogs.com/murry/p/8693068.html
Copyright © 2011-2022 走看看