Gitosis 就是一套用来管理 authorized_keys 文件和实现简单连接限制的脚本。用来添加用户和设定权限的并非通过网页程序,而只是管理一个特殊的 Git 仓库。你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略。
sudo apt-get install openssh-server
sudo apt-get install python-setuptools
cd /tmp git clone https://github.com/res0nat0r/gitosis.git cd gitosis sudo python setup.py install
在管理员机器上执行:
ssh-keygen -t [rsa|dsa]将会生成密钥文件和私钥文件 id_rsa_admin,id_rsa_admin.pub,将生成的管理员机器的公钥id_rsa.pub上传到git服务器
scp -rid_rsa_admin.pub user.name@ip:~/.ssh
将id_rsa_admin.pub拷贝到/tmp目录下
cp ~/.ssh/id_rsa_admin.pub /tmp sudo -H -u git gitosis-init < /tmp/id_rsa_admin.pub
执行该命令就会在~/repositories目录下生成gitosis-admin.git,修改该目录下的文件权限
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
git clone git@SERVER_IP:/gitosis-admin.git
在当前路径下生成gitosis-admin,该目录下包含gitosis.conf 、keydir。
gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方, 各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的 ssh公钥文件都拿来,拷贝到keydir目录下。
cp /tmp/id_rsa_user1.pub keydir/user1.pub # 请依照实际帐号命名, 不要取 user1, user2 cp /tmp/id_rsa_user2.pub keydir/user2.pub git add keydir/user1.pub keydir/user2.pub git commit -m 'add user1, user2 public key' git push
gitosis.conf文件格式:
[group gitosis-admin] //组名 members = wenyang@sz00ubt //组内成员 writable = gitosis-admin //组内成员具有写权限的仓库 readonly = helloworld//组内成员具有读权限的仓库
[group gitosis-admin] writable = gitosis-admin members = [email protected]增加下述, myteam 是 group name, 此 group 有 user1, user2 的使用者, 可以写入 project_name.git 的专案
[group myteam] writable = project_name member = user1 user2
提交修改到git服务器
git commit -m 'add user1, user2 write access to project_name' -a git push
[group test] members = wenyang@szubt03 writable = example创建example工程库:
mkdir example cd example git init touch hello.txt git add hello.txt git commit -am 'first commit' git remote add origin git@SERVER_IP:example.git 【管理员必须在gitosis.conf中配置了】 git push origin master
git clone git@SERVER_IP:example.git