Git 的安裝 與 權限的控制 (使用Gitolite)

一: 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的權限配置,須要本身去查找了..

相關文章
相關標籤/搜索