文档章节

Git 的安装 与 权限的控制 (使用Gitolite)

求学ing
 求学ing
发布于 2015/10/28 14:18
字数 1398
阅读 3098
收藏 3
点赞 0
评论 0

一: Git的安装(centos)  (参考 http://www.ccvita.com/tag/git/)

注意:

A: Git 没有什么server端和client端之分,Git属于分布式版本控制系统.

B: Git 安装步骤

yum install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel

wget https://www.kernel.org/pub/software/scm/git/git-2.6.2.tar.gz

autoconf

./configure

make

make install


二: 使用Gitolite来控制Git的权限   (参考 http://blog.it985.com/12344.html)

我使用三台机器来验证gitolite对git权限的控制

1: 192.168.1.250  centos (下文用"250机器"称呼) #这个机器作为存放最终版代码,也就所有项目的代码都会提交到这个机器.

2: 192.168.1.25 ubuntu (下文用"25机器"称呼)   #这个机器是运维工作人员的机器. 需要对192.168.1.250这台机器上的所有版本库进行权限的控制与用户的添加.

3: 192.168.1.88  windows  (下文用"88机器"称呼)  #这个机器是普通开发人员的机器,权限被限制.


A: 在250机器上创建一个用户(如git)这个用户不用设置密码,也就是不能远程登录(设置密码了也没关系因为安装好gitolite以后git用户就无法登录了). 

    git用户的作用: 

        1:使用git用户安装gitolite以后.在git用户的家目录会自动生成一个 repositories目录,里面默认有两个项目目录(gitolite-admin.git  和 testing.git).

        2: 开发者通过  git clone git@192.168.1.250:testing.git   来获取代码.    命令结构 (git  clone  用户@ipdizhi:项目目录 )

    添加用户就不多说了.很简单 useradd git   就可以了...

B: 在25机器上生成SSH Key , 

    ubuntu系统生成SSHKey 也很简单和centos一样 只需要执行下面的命令

    ssh-keygen -t sra -C "邮箱地址"   #下面会提示输入密码,可以不用输入直接回车三次就会生成,生成的位置在当前用户的家目录下面的.ssh隐藏目录里面 

    ls /home/ricky/.ssh        #ricky就是我使用的ubuntu系统的用户名

    id_rsa  id_rsa.pub 

    然后复制id_rsa.pub (公钥)到250机器的/tmp目录下面. 使用scp命令

    scp /home/ricky/.ssh/id_rsa.pub  root@192.168.1.250:/tmp/ricky.pub      #拷贝id_rsa.pub到250机器并重命名为ricky.pub (如果是你的名字是zhangsan就换成zhangsan.pub)这个用户名设置权限的时候会用到的.

C: 在88机器上SSH Key 

    windows上安装好windows版本的git以后,可以通过git bash 来生成SSHKey, 大致流程和linux上一样这里不再介绍.

    但是最终我们要把88机器生成的文件放到25机器的/tmp目录下.(一定记得重命名一下(如aaa.pub),应为gitolite会把公钥的文件名作为用户名,并对这个用户名进行权限的设置,).

    注意:88机器上生成的id_rsa.pub重命名为aaa.pub拷贝到25机器,也就是运维人员的机器上. 这次不需要拷贝到250机器

D: 在250机器上使用git用户获取/安装gitolite权限控制工具.

    获取gitolite:

    cd  /home/git

    wget https://github.com/sitaramc/gitolite.git     #当前目录会生成一个gitolite目录,里面是安装gitolite需要的文件.

    安装gitolite:

    mkdir bin    #创建一个bin目录下一步用.

    /home/git/gitolite/install -to /home/git/bin    

        注: #必须全路径,会在bin目录生成一些目录和文件.

    /home/git/bin/gitolite setup -pk /tmp/ricky.pub    

        注: # 这个命令会在/home/git/.ssh/authorized_keys 文件中加入ricky.pub公钥里面的内容.  

              #会在/home/git/repositories/目录创建两个版本库 gitolite-admin.git 和 testing.git . 

              # 当然还有好多别的操作...!

    到此gitolite权限控制工具就已经安装完成.

E: 在25机器上找一个目录(我的在这里/home/ricky/Git/)然后从250机器检出 gitolite-admin.git 里面的内容.命令如下:

    git clone git@192.168.1.250:gitolite-admin        #会在但前目录下生成一个 gitolite-admin 目录其实就是一个文件和一个目录.

        注意: 这时不会让你输入密码因为已经25机器上ricky的公钥导入到了250机器上,如果让输入密码就是有问题了参考 http://blog.it985.com/12344.html .

    文件: gitolite-admin/conf/gitolite.conf        #这个就是控制用户权限的文件.

    目录: gitolite-admin/keydir        #这是存放用户sshkey的地发,里面应该已经有一个ricky.pub的公钥.(88机器的公钥也是要放到这里的)

F:  在25机器上修改 gitolite-admin/conf/gitolite.conf 权限配置文件 并添加 88机器的公钥.

vi  gitolite-admin/conf/gitolite.conf   #给aaa用户配置权限

repo gitolite-admin

    RW+     =   ricky        #ricky是运维管理员对gitolite-admin有写权限.

repo testing

    RW+     =   @all

    RW+     =   aaa    #给aaa用户添加权限.

cp /tmp/aaa.pub  /home/ricky/Git/gitolite-admin/keydir    #拷贝aaa的公钥aaa.pub到keydir目录

ls  /home/ricky/Git/gitolite-admin/keydir 

ricky.pub aaa.pub 

G:  git通过gitolite来限制用户的权限,其实就是在通过一个特殊的版本库(gitolite-admin)来限制用户的权限的.  所以修改gitolite.conf 文件添加aaa.pub到keydir以后需要提交修改.

cd /home/ricky/Git/gitolite-admin

git add conf/gitolite.conf 

git add keydir/aaa.pub

git commit -m "add user aaa"

git push 

到此88机器就可以通过命令 git clone git@192.168.1.250:testing  来获取testing.git 版本库里面东西了,虽然里面是控的.

注意: 命令  git clone git@192.168.1.250:testing  是正确的!! 使用的就是250机器的git账户,250机器安装好gitolite以后git帐号就不能使用putty这种远程登录工具登录系统了.

比较复杂的git的使用以及gitolite的权限配置,需要自己去查找了..


    

    


© 著作权归作者所有

共有 人打赏支持
求学ing
粉丝 12
博文 144
码字总数 72348
作品 0
昌平
git和repo环境搭建

cd ~/src git clone git://eagain.net/gitosis.git Or try "git clone https://github.com/tv42/gitosis.git" cd gitosis/ python setup.py install --prefix=$HOME cd 因为Git本身没有用户和......

蓝桥书生 ⋅ 2013/11/22 ⋅ 0

Centos 7.X 部署基于Git&Gitolite的分布式版本控制系统

1、简介 1.1 git 简介 Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这...

甘兵 ⋅ 2017/12/21 ⋅ 0

ubuntu14.04/Mint17上Gitolite的搭建过程

一、安装git 服务器端 sudo apt-get install git-core 二、在服务器端安装gitolite服务器 sudo apt-get install gitolite Gitolite通过git来管理它的配置文件,我们将要创建一个操作系统的用...

大培哥 ⋅ 2015/11/10 ⋅ 0

搭建gitolite服务器

在服务器上创建git用户和组 groupadd -g gid gituseradd -u uid -g gid -d /home/git git passwd git 生成服务器公钥私钥对 ssh-keygencp id_rsa.pub gitadmin.pub 下载gitolite源码 cd /ho......

sunyy_boy ⋅ 2017/05/24 ⋅ 0

搭建Git服务器

在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。 GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司...

黑白大熊猫 ⋅ 2015/04/01 ⋅ 4

迁移Gitolite仓库到GitLab(一)

Gitolite和Gitlab仓库同步 调研目的 同步或者迁移gitolite和gitlab之间的仓库,便于维护多个服务器上的多个代码管理环境。 Gitlab的api 图一 由GitLab的官方文档可以看出,目前没有迁移gitol...

大培哥 ⋅ 2016/03/04 ⋅ 0

上云连载:搭建私有可协作的 Git 服务器

教程 上云连载:搭建私有可协作的 Git 服务器 本文是「上云连载」系列的第三篇,将介绍如何在腾讯云 CVM 上搭建一个私有可协作的 Git 服务器。文中操作也适用于其他云服务商提供的服务器资源...

EarlGrey ⋅ 2016/10/24 ⋅ 0

Gitolite 构建 Git 服务器

如果不是要和他人协同开发,Git 根本就不需要架设服务器。Git 在本地可以直接使用本地版本库的路径完成 git 版本库间的操作。 但是如果需要和他人分享版本库、协作开发,就需要能够通过特定的...

PGSmith ⋅ 2013/07/23 ⋅ 0

Ubuntu下安装Git和Gitolite

Ubuntu Server 11.04 git的源码包安装 server版系统默认安装时没有gcc工具,需要额外安装,desktop已经有了 当机器可以连接外网后就可以通过sudo apt-get 来安装了 (注意:要先更新一下包源列...

蓝桥书生 ⋅ 2012/05/17 ⋅ 2

LinuxMint13搭建gitolite服务器

1.首先需要阅读 LinuxMint13安装无密码访问git ,在该博文中讲到客户端的id_rsa.pub在执行 ssh-copy-id -i ~/.ssh/idrsa.pub git@localhost 以后,idrsa.pub的内容就被拷贝到了服务器端的/ho...

中华大吉 ⋅ 2013/07/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部