一: Git的安裝(centos) (參考 http://www.ccvita.com/tag/git/)html
注意:linux
A: Git 沒有什麼server端和client端之分,Git屬於分佈式版本控制系統.git
B: Git 安裝步驟github
yum install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-develubuntu
wget https://www.kernel.org/pub/software/scm/git/git-2.6.2.tar.gzwindows
autoconfcentos
./configurebash
make運維
make installssh
二: 使用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的權限配置,須要本身去查找了..