Gitolite許可權配置

2021-07-12 06:25:42 字數 2654 閱讀 9670

基本含義:

c    代表建立,僅在萬用字元版本庫授權是使用,用於指定誰可以建立與萬用字元匹配的版本庫

r rw rw+ r為唯讀,rw為讀寫許可權,rw+代表除了擁有讀寫許可權,還可以強制執行推送

rwc rw+c

rwd rw+d

d代表允許刪除和正則匹配的引用

rwcd rw+cd

傳統模式的引用授權

傳統模式的引用授權指的是在授權指令中只採用r、rw和rw+的傳統授權關鍵字,而不包括後面介紹的擴充套件授權指令。傳統的授權指令沒有把分支的建立和分支刪除許可權細分,而是和寫操作及強制推送操作混雜在一起。

1

@administrators = jiangxin admin

2@dev = dev1 dev2 badboy

3@test = test1 test2

45 repo test/repo1

6 rw+ = @administrators

7 rw master refs/heads/feature/ = @dev

8 r = @test

關於授權的說明:

- 第6行,對於版本庫test/repo1,管理員組使用者jiangxin和admin可以讀寫任意分支、強制推送,以及建立和刪除引用。

- 第7行,使用者組@dev除了對master和refs/heads/feature/開頭的引用具有讀寫許可權外,實際上可以讀取所有引用。這是因為讀取操作授權階段無法獲知引用。

- 第8行,使用者組@test對版本庫擁有唯讀授權。

擴充套件模式的引用授權

擴充套件模式的引用授權,指的是該版本庫的授權指令出現了下列授權關鍵字中的乙個或多個:rwc、rwd、rwcd、rw+c、rw+d、rw+cd,將分支的建立許可權和刪除許可權從讀寫許可權中分離出來,從而可對分支進行更為精細的許可權控制。

- 非快進式推送必須擁有上述關鍵字中的+方可授權。

- 建立引用必須擁有上述關鍵字中的c方可授權。

- 刪除引用必須擁有上述關鍵字中的d方可授權。

即引用的建立和刪除使用了單獨的授權關鍵字,和寫許可權和強制推送許可權分開。

1   repo    test/repo2

2rw+c = @administrators

3rw+ = @dev

4rw = @test

56 repo test/repo3

7rw+cd = @administrators

8rw+c = @dev

9rw = @test

通過上面的配置檔案,對於版本

庫test/repo2.git具有如下的授權:

第2行,使用者組@administrators中的使用者,具有建立和刪除引用的許可權,並且能強制推送。

其中建立引用來自授權關鍵字中的c,刪除引用來自授權關鍵中的+,因為該版本庫授權指令中沒有出現d,因而刪除應用授權沿用傳統授權關鍵字。

第3行,使用者組@dev中的使用者,不能建立引用,但可以刪除引用,並且可以強制推送。

因為第2行授權關鍵字中字元c的出現,使得建立引用採用擴充套件授權關鍵字,因而使用者組@dev不具有建立引用的許可權。

第4行,使用者組@test中的使用者,擁有讀寫許可權,但是不能建立引用,不能刪除引用,也不能強制推送。

通過上面的配置檔案,對於版本庫test/repo3.git具有如下的授權:

第7行,使用者組@administrators中的使用者,具有建立和刪除引用的許可權,並且能強制推送。

其中建立引用來自授權關鍵字中的c,刪除引用來自授權關鍵中的d。 -

第8行,使用者組@dev中的使用者,可以建立引用,並能夠強制推送,但不能刪除引用。

因為第7行授權關鍵字中字元c和d的出現,使得建立和刪除引用都採用擴充套件授權關鍵字,因而使用者組@dev不具有刪除引用的許可權。

第9行,使用者組@test中的使用者,可以推送到任何引用,但是不能建立引用,不能刪除引用,也不能強制推送。

對路徑的寫授權

在授權檔案中,如果乙個版本庫的授權指令中的正則引用字段出現了以name/開頭的引用,則表明該授權指令是針對路徑進行的寫授權,並且該版本庫要進行基於路徑的寫授權判斷。

1  repo foo

2rw = @junior_devs

@senior_devs34

rwname/ = @senior_devs

5 - name/makefile = @junior_devs6rw

name/ = @junior_devs

關於授權的說明:

- 第2行,初級程式設計師@junior_devs和高階程式設計師@senior_devs可以對版本庫foo進行讀寫操作。

- 第4行,設定高階程式設計師@senior_devs對所有檔案(name/)進行寫操作。

- 第5行和第6行,設定初級程式設計師@junior_devs對除了根目錄的makefile檔案外的其他檔案具有寫許可權。

使用gitolite管理git許可權

1 伺服器上新增專用管理賬戶git,並在伺服器上安裝git 2 建立本地機器的公私鑰 3 伺服器安裝gitolite 4 倉庫新增與管理 5 新增使用者並管理使用者許可權 6 修改管理員的公鑰 7 修復管理員的許可權 一 伺服器上安裝git略過 二 建立本地機器的公私鑰 ssh keygen f s...

用gitolite管理使用者許可權 轉

gitolite 是gitosis用perl重寫的,更好用,安全級別應該更高。參考 c i,x x d3 p g e gitolite 4 f w d,g 2 z pro git l u m a3 u 9 u p 我用的是ubuntu做例子,沒有ssh的知識的最好惡補一下,否者不知道會錯在 伺服器 ...

Gitolite 部署GiT 倉庫

gitolite 提供了便於部署git遠端倉庫的工具,它本身並不提供服務,服務仍舊依託 ssh 對外提供。gitolite 增強了授權體系,和倉庫管理功能。在本地clone乙個gitolite admin的倉庫,直接在本地修改,再推送到遠端伺服器上即可生效。gitolite適合小團隊管理.usera...