git+gitolite 如何實現權限控制


前言

首先說明一下,這還是本人第一次寫這類文章,如有不妥,多多見諒。

基本情況

因為現在公司的人不是很多,但是還對代碼有着嚴格的管控,所以采用了gitolite的管理方式

其實正常來講,這種權限的把控在我看來沒什么必要。

我在之前沒有接觸過這個插件的時候,對它可以說是一頭霧水,現在搞懂了以后也想分享給大家

好了,廢話不多說,咱們開始吧。

一、安裝git

首先咱們要弄清楚,git是分本地以及遠端的,這里以我使用的windows電腦為例(Mac不需要安裝),

現在Git服務端安裝好Git,大部分的是系統自帶的

[root@uat1 admin]# rpm -qa|grep git
libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64
git-1.7.1-9.el6_9.x86_64

然后需要安裝windows本地的git(這里自行百度,很簡單),出現我的畫面就說明你成功了

二、獲取本地公鑰

在git客戶端(也就是你的windows電腦,以下使用名詞客戶端),執行下面的命令:

ssh-keygen -t rsa

緊接着連續回車三次,你的公鑰就會自動生成,下面是查找公鑰的方法

Murry@Savior MINGW64 ~
$ cd ~/.ssh/

Murry@Savior MINGW64 ~/.ssh
$ ls
 id_rsa.pub  id_rsa  known_hosts

你會生成兩個文件,一個帶.pub的就是公鑰,另一個不帶的就是私鑰

三、在服務端安裝gitolite

然后開始安裝gitolite

 首先咱們需要安裝一個git用戶,用這個用戶來進行安裝

[root@uat1 ~]# useradd git (增加用戶)
[root@uat1 ~]# su - git  (切換用戶)
[git@uat1 ~]$ pwd  (查看位置)
/home/git

開始下載gitolite

[git@uat1 ~]$ git clone https://github.com/sitaramc/gitolite

緊接着,開始安裝gitolite

[git@uat1 ~]$ mkdir /home/git/bin  (創建bin目錄)
[git@uat1 ~]$ gitolite/install -to /home/git/bin  (將gitolite安裝到目錄下)
[git@uat1 ~]$ cd bin/  (進到目錄)
[git@uat1 bin]$ ls  (查看內容)
commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF

這樣咱們就可以看到gitolite相關的命令了

四、配置gitolite的管理員

這里提一下,gitolite的管理員可以是自己的一台電腦也可以是一台服務器,這里咱們配置為自己的電腦

首先將之前獲取到的公鑰,也就是id_rsa.pub發送到git的服務端(也就是服務器上)

scp id_rsa.pub user@ip地址:/tmp  (這里會需要輸入服務器密碼)

服務器接收到以后,將文件名改為admin.pub

[git@uat1 tmp]$ mv id_rsa.pub admin.pub

接着就開始用管理員的公鑰來進行安裝gitolite

[git@uat1 ~]$ /home/git/bin/gitolite setup -pk admin.pub

緊接着你就可以看到生成了兩個文件

/home/git/repositories/gitolite-admin.git
/home/git/repositories/testing.git

第一行的是管理者的git倉庫,第二行的就是測試倉庫

五、如何進行權限的管控

然后咱們開始生成管理員的管理倉庫

[git@uat1 ~]$ git clone user@ip地址:gitolite-admin

然后咱們進入目錄下就可以看到兩個文件

Murry@Savior MINGW64 ~/.ssh/gitolite-admin (master)
$ ls
conf/  keydir/

這兩個目錄咱們分別來看

進入conf/了解一下

Murry@Savior MINGW64 ~/.ssh/gitolite-admin (master)
$ cd conf/

Murry@Savior MINGW64 ~/.ssh/gitolite-admin/conf (master)
$ ls
gitolite.conf

可以看到gitolite.conf這個文件,它就是用來管理git的權限文件,來打開看一下內容

Murry@Savior MINGW64 ~/.ssh/gitolite-admin/conf (master)
$ cat gitolite.conf
repo gitolite-admin
    RW+     =   gitadmin
 repo testing

在這里我們就可以清楚地看到gitolite是怎么管理權限的 ,repo作為倉庫的名字,而下面就是

擁有權限的人,這里RW就是可讀可寫

那么問題就來了,倉庫和權限者他是怎么定義的呢

這里倉庫其實只要你寫了名字他就會自動生成,而擁有權限者的名字,就用到了keydir/目錄

這個目錄下的文件就是擁有者的公鑰,.pub前面的名字就是這里的名字

六、更改后如何從本地提交到遠端

關於這個問題只需要幾個git基本命令即可

$ git add .

$ git commit -m "注釋內容"

$ git push

只需要這三步操作,如果對git命令不了解建議先了解一下

到這里,我們就實現了gitolite的權限管控

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM