为自己配置之后的简要记录,大差不差,如需参考请注意有坑,概不负责。
1.安装 git-core, openssh-server, openssh-client
gw@ubuntu:~$sudo apt-get install git-core openssh-server openssh-client如果无法安装更新软件源
2.添加 git 用户
gw@ubuntu:~$sudo useradd -m git #-m将在/home目录下生成git用户主目录git
gw@ubuntu:~$sudo passwd git
3.建立一个git仓库的存储点
gw@ubuntu:~$sudo mkdir /home/gits
gw@ubuntu:~$sudo chown git:git /home/gits
gw@ubuntu:~$sudo chmod 755 /home/gits
4.安装git用户管理软件 gitosis
先配置gw用户git信息
gw@ubuntu:~$git config --global user.name "kuikuitage"
gw@ubuntu:~$git config --global user.email "kuikuitage@163.com"
然后安装python工具
gw@ubuntu:~$sudo apt-get install python-setuptools
下载gitosis源码到某个目录,直接下载到了gw用户主目录
gw@ubuntu:~$git clone https://github.com/res0nat0r/gitosis.git
gw@ubuntu:~$cd gitosis && sudo python setup.py install
完成gitosis安装,默认gitosis把仓库放在/home/git/repositories下
所以做一个软链接
切换到git用户来操作/home/gits目录
gw@ubuntu:~$su git
$ln -s /home/gits /home/git/repositories
$exit
5.将gw用户添加为第一个管理员
gw@ubuntu:~$ssh-keygen -t rsa #将在/home/gw/.ssh下生成一个id_rsa.pub文件
gw@ubuntu:~$sudo -H -u git gitosis-init< ~/.ssh/id_rsa.pub
Initialized empty Git repository in /home/gits/gitosis-admin.git/
Reinitialized existing Git repository in /home/gits/gitosis-admin.git/
至此就在/home/gits目录下生成了一个gitosis-admin.git的git账号权限管理仓库
并且将gw用作为第一个管理员加入到gitosis-admin.git仓库中的配置文件中了。
同过git仓库来管理用户权限配置文件,先为post-update添加权限
gw@ubuntu:~$sudo passwd root
gw@ubuntu:~$su
root@ubuntu:/home/gw#sudo chmod 755 /home/gits/gitosis-admin.git/hooks/post-update
6.gw用户下clone用户权限配置仓库
gw@ubuntu:~$git clone git@192.168.101.105:gitosis-admin.git
在克隆下来的gitosis-admin目录下有一个目录和一个文件
gitosis.conf keydir
gitosis.conf用来配置用户信息,keydir目录用来存放用户的公钥
注意gitosis-admin仓库是用来管理用户权限的,该仓库做了修改必须要add commit到服务器才会生效。
7.具体配置
在一个开发机生成公钥后将公钥上传到服务器
如:在WIN7下git生成的一个公钥文件id_rsa.pub的添加
打开该id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6FwLSW45VGHKaQ4XhJuZer4/2wae/2/EL+j17DV0iTeq/EX1Ozr+4X5M2+n/wFq3JyGBIhZfpg1cBEFRLXQGloxMMwZU+haPDEFAlAvwFXXKkTajuePx8QAZIx36eo4uAfymMpykT1k38PBOXs12xVP6U4EFcuQQduLPFQo3YT2vOi3m2t76iPP6GcmeCP/n0RgkVjeLqrjf/FS8z9dDVW/K5qFxpFyCa6hcwxurUvd3vlkdj3uphXGx/h19iHMtgvNmqp0+A0yKPrrlHYMHF5lHktlewyD2iMTypq0YJ6OX+/p1FjMcmifeWLmiKj4sS476ug4NodTRwqu0CeAxb Administrator@USER-20160224RJ
查看开发机生成的用户名为Administrator@USER-20160224RJ
将该文件修改为Administrator@USER-20160224RJ.pub拷贝到gw用户clone下来的gitosis-admin目录的keydir目录下
打开gw用户clone下来的gitosis-admin目录的gitosis.conf文件
[gitosis]
[group gitosis-admin]
members = gw@ubuntu
writable = gitosis-admin
修改为
[gitosis]
[group gitosis-admin]
members = gw@ubuntu Administrator@USER-20160224RJ
writable = gitosis-admin
表示gitosis的管理用户组中成员有gw@ubuntu即当前用户gw,管理的仓库包括gitosis-admin
即列出的两个用户可以作为管理员可以操作writable权限列出的仓库。
gitosis以这种方式,为不同的用户分配不同的读写权限来管理仓库
将Administrator@USER-20160224RJ添加后需要上传到服务器。即将gw用户的gitosis-admin刚才做的修改同步到服务器git用户下gitosis-admin仓库
gw@ubuntu:~/git/gitosis-admin$git add .
gw@ubuntu:~/git/gitosis-admin$git commit -m "add Administrator@USER-20160224RJ"
gw@ubuntu:~/git/gitosis-admin$git push origin master
至此新的管理员添加完毕
8.在WIN7下获取gitosis-admin仓库
Administrator@USER-20160224RJ /g/gittest$ git clone git@192.168.101.105:gitosis-admin.git