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

2016-07-12 10:24:31来源:oschina作者:求学ing人点击

一: 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


wgethttps://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机器的公钥.


vigitolite-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 addconf/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的权限配置,需要自己去查找了..

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台