gitosis使用笔记

gitosis是Git下的权限管理工具,通过一个特殊的仓库(gitosis-admin.git)对Git权限进行管理。

1:服务端安装并配置gitosis

(1)通过以下方式获取到安装包

[email protected]:/home/git# git clone https://github.com/res0nat0r/gitosis

(2)使用python进行安装

[email protected]:/home/git# python gitosis/setup.py install

(3)将authorized_keys移除或重新命名为authorized_keys.bak,Gitosis 将为我们管理公钥,后再重新添加公钥,并且让 Gitosis 自动控制authorized_keys文件。

[email protected]:/home/git/.ssh# pwd
/home/git/.ssh

(4)将之前的git用户bash登陆设置修改过来

vim /etc/passwd

46 git:x:1002:1002:,,,:/home/git:/bin/bash

(5)初始化 Gitosis ,需要通过自己的公钥来运行gitosis-init,首先将我本地的公钥复制到服务端:

[email protected]:git$ scp /home/y/.ssh/id_rsa.pub  [email protected]192.168.0.143:tmp/
[email protected]192.168.0.143‘s password:
id_rsa.pub                                       100%  399     0.4KB/s   00:00
[email protected]:git$ 

服务端执行以下操作:注意不是在超级管理员用户下的:

[email protected]:/home/git$ sudo -H -u git gitosis-init < ~/tmp/id_rsa.pub

这样该公钥的拥有者就能修改包含着 Gitosis 设置的那个 Git 仓库了。

此时目录结构如下:

同时.ssh下面会生成一个:authorized_keys文件

由gitosis管理的仓库放在:repositories/目录下面

此时在repositories/目录下面初始化一个空的仓库:

2:客户端操作gitosis

(1)现在可以试一下用初始化 Gitosis 公钥的拥有者身份 SSH 进服务器:

说明 Gitosis 认出了该用户的身份,但由于没有运行任何 Git 命令所以它切断了连接。

(2)克隆 Gitosis 的控制仓库到本地:

注意:IP后面直接跟仓库的名称,无需路径,gitosis-admin.git在服务端的repositories/目录下面。

gitosis-admin目录结构如下:

gitosis.conf文件是用来设置用户、仓库和权限的控制文件。

keydir 目录则是保存所有具有访问权限用户公钥的地方每人一个。

(3)修改 gitosis.conf配置文件并同步到服务端:其操作方式与普通的Git仓库一致,

提交到服务端之后,查看服务端:

(4)如果是多人协助开发同用一个版本库,则需要将他们每个人的公钥文件添加到keydir文件夹然后push到服务端。

文件的命名将决定在gitosis.conf配置文件中的称呼。

例如:参考《ProGit》

现在我们为 John,Josie 和 Jessica 添加公钥:

$ cp /tmp/id_rsa.john.pub keydir/john.pub
$ cp /tmp/id_rsa.josie.pub keydir/josie.pub
$ cp /tmp/id_rsa.jessica.pub keydir/jessica.pub

然后把他们都加进 ‘mobile’ 团队,让他们对iphone_project具有读写权限:

[group mobile]
writable = iphone_project
members = scott john josie jessica

Gitosis 也具有简单的访问控制功能。如果想让 John 只有读权限,可以这样做:

[group mobile]
writable = iphone_project
members = scott josie jessica
[group mobile_ro]
readonly = iphone_project
members = john

现在 John 可以克隆和获取更新,但 Gitosis 不会允许他向项目推送任何内容。

时间: 2024-07-30 01:33:46

gitosis使用笔记的相关文章

CentOS安装Git服务器 Centos 7.0 + Git 2.2.0 + gitosis (实测 笔记)

环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 服务器IP:192.168.1.31 域名:www.domain.com SSH端口:8200(默认为22) 安装步骤: 1.显示服务器版本[[email protected] ~]# cat /etc/redhat-release#CentOS Linux release 7.0.1406 (Core) [[email protecte

git gitosis安装笔记

$ tar -zxf git-1.7.2.2.tar.gz $ cd git-1.7.2.2 $ make prefix=/usr/local/gitsrv all $ make prefix=/usr/local/gitsrv install $ yum install python python-setuptools

Android学习笔记-回顾计划

人最怕的是,没有方向! 1.楔子: 本人接触Andrjoid开发也有一年多了,期间在一家外包公司独立开发了五六个项目.虽谈不上大牛,但自认小有所成.平时没什么爱好,就喜欢看看技术博客,试验各种开源代码,写写学习笔记. 最近感觉有点陷入瓶颈了,进步甚慢,却又不知该如何进一步提升自己.对于开发中遇到的很多问题,虽有所领悟,然不够系统,一些小知识点,也常有遗漏.觉得是时候系统的反思一下自己的知识体系了,于是决定制定一个回顾计划,综合自己看的博客.书籍,以及自己的开发实践,对一些常用的知识点进行整理.

Git学习笔记整理

Git学习笔记 1.安装Git 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置 $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]" 2.创建版本库-repository $ mkdir learngit $ cd learngit $ pwd /Users/m

【安全牛学习笔记】

弱点扫描 ╋━━━━━━━━━━━━━━━━━━━━╋ ┃发现弱点                                ┃ ┃发现漏洞                                ┃ ┃  基于端口五福扫描结果版本信息(速度慢)┃ ┃  搜索已公开的漏洞数据库(数量大)      ┃ ┃  使用弱点扫描器实现漏洞管理            ┃ ╋━━━━━━━━━━━━━━━━━━━━╋ [email protected]:~# searchsploit Usage:

51CTO持续更新《通哥的运维笔记》

<通哥的运维笔记>将持续在51CTO网站更新,希望大家多多关注.互相学习,后期,我将会退出<通哥的运维笔记>系列视频教程,希望带给大家最大的收获,帮助大家更好的学习.进步.<通哥的运维笔记>主要从linux系统管理.虚拟化.cloudstack云平台以及网络管理之CCNA.CCNP.CCIE,等等方面深入讲解.

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main