Gitosis是一套用来管理authoriz_keys文件和实现简单链接限制的脚本。
也是一个git项目。
用户可以通过修改这个Gitosis项目并推送至服务器上,Gitosis就会随之改变运行策略。
Gitosis是依赖于某些Python工具,使用前需要安装Python的setuptools包
默认Gitosis会把 /home/git作为存储所有Git仓库的根目录
1、服务端
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
安装git
yum install -y git
安装python 和python工具
yum install -y python python-setuptools
获取 gitosis 源代码
git clone git://github.com/resOnatOr/gitosis.git #用于管理
cd gitosis
python setup.py install
#显示Finished processing dependencies for gitosis=0.2 表示成功
yum install -y ssh
启动 ssh 服务,找到 sshd 文件执行就可以
2、客户端
安装git
yum install -y git
ssh-keygen -t rsa #可以设置用户名
scp ~/.ssh/id_rsa.pub root@172.17.0.2:~/
3、服务端
添加用户 git
useradd -r -s /bin/sh -c 'git version control' -d /home/git git
mkdir -p /home/git
chown git:git /home/git
生成管理库
yum install -y sudo
sudo –H –u git gitosis-init < ~/id_rsa.pub #id_rsa.pub为客户端传过来的
#注解:
1、 生成的gitosis-admin 为git的用户访问权限管理库,gitosis通过这个git库来管理所有git库的访问权限。
2、 通过执行初始化,该公钥的拥有者就能修改用于配置gitosis的那个特殊Git仓库了
#修改上传权限:
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
4、客户端导出管理(xxx为生成key时输入的用户名)
mkdir –p /git-repo/
cd /git-repo
git clone git@172.17.0.2:gitosis-admin.git
cd gitosis-admin
find.
#./gitosis.cond
#./keydir
#./keydir/xxx.pub
注解:
gitosis.conf文件用来设置用户、仓库和权限的控制文件
Keydir目录则是保存所有具有访问权限用户公钥的地方
./keydir/xxx.pub:如前所述,该用户具有访问权限
5、客户端创建及设置管理项目
cd /git-repo/gitosis-admin
#查看已经上传密钥
ls keydir/
xxx.pub
#授权和权限控制
vi gitosis.conf
[gitosis]
[group gitosis-admin]
members = xxx
writable = gitosis-admin
[group git-test]
writable = git-test
members = xxx
git push origin master
初始化、增加及使用项目 git-test
cd /git-repo
mkdir git-test
cd git-test
git init
touch README
git add .
git commit –a –m “init git-test”
git remote add origin git@172.17.0.2:git-test.git
git push origin master
6、服务端
ls /home/git/repositories 会多出git-test.git文件
常见问题:
1、没有权限时,请查看 /home/git/repositories 所有权是否属于 git 用户
查看 key 有没有上传至服务器,查看 gitosis.conf文件有没有授予权限。