gitolite的部署

gitolite服務部署:linux


1,在git服務器端安裝git並建立git用戶。git

yum install -y gitgithub

useradd git 正則表達式

 


2,生成gitolite的管理帳戶,這個帳戶也能夠在git服務器端生成,也能夠在本身的客戶端生成。(爲了防止人員離職,致使管理員丟失,建議在git服務器端生成。我這裏是在git服務器端生成管理員用戶的)vim


su - gitbash

ssh-keygen 服務器

cp /home/git/.ssh/id_rsa.pub /tmp/admin.pubssh

屢次回車,生成祕鑰對,找到~/.ssh/id.rsa.pub 上傳到git服務器的/tmp上,並命名爲admin.pubide

 

 


3,切換到git用戶,並確保~/.ssh/authorized_keys文件爲空或者不存在測試

rm -f ~/.ssh/authorized_keys

 

 

4,安裝gitolite


git clone git://github.com/sitaramc/gitolite #下載gitolite軟件

mkdir -p $HOME/bin #建立存放gitolite相關命令的目錄

gitolite/install -to $HOME/bin #安裝gitolite,若是執行這個報錯,請先執行 yum install -y perl-Time-HiRes。

echo "PATH=$PATH:$HOME/bin" >> .bashrc #將gitolite命令加入環境變量中,建議退出終端,從新進入。


gitolite setup -pk /tmp/admin.pub #將客戶端的用戶配置爲git的管理員,其實就是將admin.pub的公鑰添加到authorized_keys裏面去了。

 


5,查看~/.ssh/authorized_keys 裏面是否已經有添加進去的公鑰

cat ~/.ssh/authorized_keys

另外,安裝完成後,咱們能夠在$HOME下看到一個repositories目錄,裏面有兩個倉庫,分別爲gitolite-admin和testing,其中gitolite-admin爲管理倉庫。

 

6,克隆gitolite-admin倉庫

cd /tmp

git clone git@127.0.0.1:gitolite-admin


進入gitolite-admin倉庫,會看到兩個目錄,分別爲keydir和conf,其中keydir目錄用來管理用戶,在其中能夠看到默認有一個文件叫作admin.pub,正是咱們以前生成的管理用戶的公鑰文件.

查看conf裏面的配置文件:

[git@iz2ze0n2ws2p2jpw1i9fd4z conf]$ cat gitolite.conf 
repo gitolite-admin
    RW+     =   admin 

repo testing
    RW+     =   @all

 

能夠簡單的發現 repo 定義倉庫名

RW+ 表示權限 可讀可寫可強制更新

admin 表示admin用戶,即admin用戶能夠對gitolite-admin這個倉庫有可讀可寫可強制更新權限。

 

7,添加用戶

添加用戶其實蠻簡單,只要在管理員克隆下來的gitolite-admin中,將用戶添加到conf/gitolite.conf中,並將要添加用戶的pub文件放入keydir中便可,而後push到git服務器中便可。

我這裏添加一個xiaobai用戶,並設置爲管理員。

首先在原來的admin用戶下克隆代碼(上面已經克隆了):

cd /tmp/gitolite-admin

vim /conf/gitolite.conf

 

上傳xiaobai用戶的公鑰到keydir中

 

 執行git相關命令,將變化的內容推送到git服務器上。

git add .

git commit -m 'add xiaobai user to admin'

git push 

  

 切換到小白帳戶,測試建立用戶是否成功,克隆代碼 

git clone git@git服務器地址:gitolite-admin 

 

以下

 

 

 

8,添加倉庫,主要是更改gitolite.conf文件,定義1個repo便可。

 

 

 

 

9,權限說明

經常使用的配置:

1,定義組

@admin=xiaobai  xiaoa  #定義一個admin組,組員有xiaobai,xiaoa



2,定義一個倉庫

repo spider



3,@all 全部用戶

repo spider

RW = @all  #表示全部用戶對spider倉庫有讀寫權限

 

具體的能夠參考以下:

1 @admin = breezey chenliang
2 repo gitolite-admin
3 RW+ = breezey
4 repo ossxp/.+
5 C = @admin
6 RW = @all
7 repo testing
8 RW+ = @admin
9 RW master = junio
10 RW+ pu = junio
11 RW cogito$ = pasky
12 RW bw/ = linus
13 - = somebody
14 RW tmp/ = @all
15 RW refs/tags/v[0-9] = junio
咱們先對該示例文件做一個簡單的說明,以方便你們對受權文件有一個基本的瞭解:
第1行定義了一個admin的組,該組裏包含兩個用戶,分別是breezey chenliang
第2-3行定義了一個版本庫gitolite-admin,而且指定breezey用戶對gitolite-admin倉庫擁有讀(R),寫(W)和強制更新(+)的權限
第4行經過正則表達式定義了一組版本庫,即ossxp目錄下的全部版本庫
第5行定義admin組的用戶能夠在ossxp目錄下建立版本庫
第6行定義全部用戶對ossxp目錄下的版本庫擁有讀寫的權限,但不能強制更新
第7行定義了一個版本庫testing
第8行定義了admin組用戶對testing庫的全部分支和tag擁有讀、寫、重置、添加、刪除的權限
第9行定義junio用戶對master分支有讀寫的權限,還包括以master開頭的全部分支。
第10行定義junio用戶對pu分支擁有讀寫,重置,添加,刪除的權限,還包括以pu開頭的全部分支
第11行定義pasky用戶對cogito分支擁有讀寫的權限,僅此分支,精確匹配
第12行定義linus用戶對bw/擁有讀寫的權限
第13行定義somebody用戶對testing倉庫有寫的權限
第14行定義全部用戶對tmp/擁有讀寫的權限
第15行定義junio能夠讀寫任意tag,包括以v加上數字開頭的tag


組的定義:
@admin = breezey chenliang
@user = @admin @staff user1
版本庫的定義:
repo ossxp/.+ #匹配ossxp目錄下的全部版本庫
repo myrepo.$ #匹配以myrepo.結尾的版本庫
repo sandbox/test1 #建立sandbox下的test1庫
受權關鍵字:
C:
C表明建立。僅在符版本庫受權時可使用。用於指定誰能夠建立與通配符匹配的版本庫。
R,RW,RW+:
R爲只讀,RW爲讀寫,RW+爲讀寫及強制push
RWD,RW+D:
只有當受權指令中定義了正則引用(正則表達式定義的branch、tag等),纔可使用該受權指令。其中 D 的含義是容許刪除和正則引用匹配的引用(branch or tag)
RWCD,RW+CD:
只有當受權指令中定義了正則引用(正則表達式定義的branch、tag等),纔可使用該受權指令。其中 C 的含義是容許建立和正則引用匹配的引用(branch or tag),D的含義是容許刪除和正則引用匹配的引用(branch or tag )
-:
減號(-)是一條禁用指令,只對寫操做起做用,不會對用戶的讀操做施加影響。

 

參考:https://www.linuxidc.com/Linux/2014-02/96991.htm

相關文章
相關標籤/搜索