Ubuntu Gitosis安装设置

Gitosis 就是一套用来管理 authorized_keys 文件和实现简单连接限制的脚本。用来添加用户和设定权限的并非通过网页程序,而只是管理一个特殊的 Git 仓库。你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略

Git服务器端配置gitosis


1.安装SSH服务端

sudo apt-get install openssh-server

2.安装pythonsetup tool

sudo apt-get install python-setuptools

3.获取并安装gitosis

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

管理员客户端


1.客户端获取gitosis

在管理员机器上克隆上面在git服务器上创建的gitosis-admin.git库,由于前面创建gitosis-admin.git库时使用的是管理员机器的公钥,因此在克隆时只要加入对应的私钥就可以了。

git clone git@SERVER_IP:/gitosis-admin.git

在当前路径下生成gitosis-admin,该目录下包含gitosis.conf 、keydir。

gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方, 各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的 ssh公钥文件都拿来,拷贝到keydir目录下。

2.添加用户权限

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

3.设置工程权限

gitosis.conf文件格式:

[group gitosis-admin] //组名
members = wenyang@sz00ubt //组内成员
writable = gitosis-admin //组内成员具有写权限的仓库
readonly = helloworld//组内成员具有读权限的仓库

vim gitosis.conf # 会看到下述, 不要动他, 于最下方设定自己的 Group / 专案名称即可.
[group gitosis-admin]
writable = gitosis-admin
members = admin@example.com
增加下述, 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

4.添加工程

使用git在指定目录创建一个git库,该git库的名字必须事先在gitosis.conf文件中配置了对应权限。
[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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值