目的:Git在Linux上的安裝配置包括設置不同用戶的權限。
以下軟件將被安裝
Git
Gitosis
user1可以對於test倉庫有讀寫權限,user2對於test倉庫只有可讀權限。
1. 增加yum repository
在CentOS中,在不增加repository情況下是找不到Git的套件的,所以需要增加一個repository。
rpm -Uvh http://yum.beta.gist.com/gist/centos/5/RPM/epel-release-5-3.noarch.rpm
2. 安裝Git, git-web以及gitosis
yum -y install git gitweb gitosis
3. 配置Git賬號
useradd git # 使用"git"作為管理Git的用戶
passwd git # 更改"git"密碼
4. 配置Gitosis
su - git # 使用"git"操作
cd ~
# Gitosis需要設置name和email才能進行commit動作
git config --global user.name "用戶顯示的名稱"
git config --global user.email "用戶郵件地址"
ssh-keygen -t rsa # "git"用戶作爲Git服務器的管員,
#用它來生成public key
5. 初始化Gitosis
su – git
gitosis-init < ~/.ssh/id_rsa.pub
#Gitosis管理一個特殊的 Git 倉庫。你只需要在這個特殊倉庫內做好相應的設定,然後推送到服務器上,Gitosis 就會隨之改變運行策略.
#這樣該公鑰的擁有者就能修改用於配置 Gitosis 的那個特殊 Git 倉庫了。接下來,需要手工對該倉庫中的 post-update 腳本加上可執行權限:
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
6配置git服務選項,取出"gitosis-admin" repository
su - gitcd ~git clone
git@SERVER:/gitosis-admin.git # 取出儲存權限的repository
#修改gitosis.conf配置文件
su - gitcd ~vi ./gitosis-admin/gitosis.conf
[gitosis]
loglevel=DEBUG #增加這一句將開啓debug模式顯示更多的信息
# 增加
[group rw]
writable = test
members = user1
[group rd]
readonly = test
members = user2
# 格式
[group 羣組名稱]
writable = 項目名稱
members = 用戶 (用空白分開不同的用戶)
#將配置文件推到服務器上
cd gitosis-admin
git add .
git commit -am "config1"
git push origin master
# 如果SSH port不是22 -> git push ssh://git@SERVER:SSH_PORT/gitosis-admin.git master
7建立第一個版本的"test" project
su - git
cd ~/repositories
mkdir test.git
chmod 750 test.git
cd test.git
git init --bare # 建立一個空的repository
在client上新建user1 user2用戶
useradd user1
passwd user1
useradd user2
passwd user2
先測試是否可以clone
su – user1
cd ~
git clone
[email protected]:repositories/test.git #!注意地址我這245是服務器的地址
提示將一個空倉庫拉下來了
cd test/
echo "A" >hello
git add .
git commit -am “162:user1:1” # 要先設定user.email和user.name,
git push origin master #推到服務器的版本庫裏
接着用git2測試落下test看有無user1添加的hello文件
su – user2
cd ~
git clone
[email protected]:repositories/test.git
ls顯示已經有hello文件了
8配置用戶權限
建立user1,user2的公鑰和密匙(默認是2048位的)
su - user1
ssh-keygen -t rsa
su - user2
ssh-keygen -t rsa
將user1和user2的公鑰複製到git配置文件夾的keydir中
su – git #在服務器上操作
cd ~/gitosis-admin
vim keydir/user1.pub
vim keydir/user2.pub #將公匙複製進去
git add keydir/user*
git commit -am "config3"
git push origin master
注意:將密匙加入後user1 和user2clone地址變化了,我也不知道爲什麼
su - user1;cd ~
git clone
[email protected]:test.git
有寫入權限
su – user2;cd ~
git clone
[email protected]:test.git
只有讀取權限無寫權限