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

一: 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 [email protected]: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  [email protected]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 [email protected]: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 [email protected]:testing  来获取testing.git 版本库里面东西了,虽然里面是控的.

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

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

时间: 2024-12-19 09:04:23

Git 的安装 与 权限的控制 (使用Gitolite)的相关文章

[转载] 使用Gitolite来对Git的repository实现权限控制

我们项目组打算从svn向git迁移,前几天我搭建了git环境,把代码从svn转移过来,然后所有成员都通过server上的git账号来做pull和push,一切都安置妥当,没有问题.但是后来其它项目组也打算使用这个git server,那么问题来了,之前那种授权的方式肯定是不够的,因为只要能连上server,那么他对这个server上所有的repository都有完全的读写权限,这显然是不可接受的. 所以打算使用Gitolite这个组件来做权限控制,搜索了下,找到的文章貌似都是老版本的,所以有了写

使用Gitolite来对Git的repository实现权限控制

我们项目组打算从svn向git迁移,前几天我搭建了git环境,把代码从svn转移过来,然后所有成员都通过server上的git账号来做pull和push,一切都安置妥当,没有问题.但是后来其它项目组也打算使用这个git server,那么问题来了,之前那种授权的方式肯定是不够的,因为只要能连上server,那么他对这个server上所有的repository都有完全的读写权限,这显然是不可接受的. 所以打算使用Gitolite这个组件来做权限控制,搜索了下,找到的文章貌似都是老版本的,所以有了写

再谈git的http服务-权限控制gitweb版(未成功)

截至目前,对gitweb的掌握还没达到最终目标,仅仅实现了通过浏览器来浏览项目,通过git命令仍然未能clone项目.但仍然要记录下来,主要是因为打算暂时放弃这条路,而所收获的一些经验还是要记录下来.说不定哪天又捡起来了呢. 首先描述下目标:可以按照项目.人员来分别控制项目的读写权限.方法应该很多,之前通过git-http-backend的hook可以搞定,gitlab也应该可以搞定.根据已有的资料,gitweb也应该可以搞定.思路之一应该是scriptalias,把git命令的申请路由到git

再谈git的http服务-权限控制hooks版

通过git-http-backend方法提供的http服务基本上可以做到认证用户才能使用,但只能控制到服务器路径访问,而且无法区分读写.经过不懈努力,找到了方法,但涉及到脚本编写,暂时未有成熟版本提供. 基本思路就是利用apache的路径权限设置控制版本库的读权限:通过hooks/pre-receive钩子来控制版本库的写权限,具体钩子的原理和用户这里不写了.git提供了几个全局变量可以在pre-receive钩子里面使用,详情可以参看git-http-backend manual page.

Git介绍,安装,Git+Git flow使用

特点: 1.可以快速的切换项目分支. 2.回滚某个分支的版本. 3.每次切换分支不用修改配置文件 (因项目而定义) 4.不用 新建/切换 虚拟目录/域名.因为都是在同一个目录下进行. 5.上面这些对你有吸引力吗? 喜欢那就参与进来吧.  什么是Git  Git是Linux Torvalds为了帮助管理 Linux,内核开发而开发的一个开放源码的版本控制软件. 特点是快速,开源,分布式管理系统.  它可以对代码的修改进行回滚,将错误的代码剔除.  或者简单地跟踪哪些人修改了代码的哪些行的内容. 对

​web服务目录的访问权限的控制

web服务目录的访问权限的控制 1.确认web服务器已经安装并启动 [[email protected] ~]# ls /usr/local/httpd/ [[email protected] ~]# netstat -utpln |grep 80 tcp        0      0 :::80                       :::*                        LISTEN      73341/httpd 2.设置只允许192.168.100.110访问,

ubuntu Gitolite管理git server代码库权限

公司代码库用Git,全部用SSH认证,多个代码库多个用户,权限管理是个头疼的问题,今天终于有空测试下Gitolite, Gitolite是在Git之上的一个授权层,依托sshd或者httpd来进行认证.(概括:认证是确定用户是谁,授权是决定该用户是否被允许做他想做的事情). Gitolite允许你定义访问许可而不只作用于仓库,而同样于仓库中的每个branch和tag name.你可以定义确切的人(或一组人)只能push特定的"refs"(或者branches或者tags)而不是其他人.

转载——git的安装和使用

现简述一下git的安装和使用. 安装: 有关git于svn区别及其优势不再赘述,现简介其使用方法,因为我的电脑是win7系统,所以需要到官网(https://git-for-windows.github.io/)下载msysgit.(图形界面的话还需安装TortoiseGit) 下载完成,双击安装,一路选择默认设置即可. (选择使用git的命令行模式,选择默认git Bash模式即可) (选择换行格式,默认选第一个windows下使用的跨平台样式即可). 安装完成后,找到刚刚安装的git ,其中

centos6上安装RAC权限绑定问题

自己的环境如下: [[email protected] ~]# ll /dev/mapper/* crw-rw---- 1 root root 10, 58 Oct 24 07:59 /dev/mapper/control lrwxrwxrwx 1 root root      7 Oct 26 09:19 /dev/mapper/dg -> ../dm-0 lrwxrwxrwx 1 root root      7 Oct 26 09:19 /dev/mapper/ocr -> ../dm-