本文介绍ubutu下使用gitolite实现多项目的权限管理
1、安装git
  sudo apt-get install git

2、设置Git的user name和email:

  git config --global user.name "git_name"
   git config --global user.email "email"

3、生成公钥

  ssh-keygen -t rsa -C "email"

  如果不设置密码直接3个回车即可,生成的公钥(id_rsa.pub)会在主目录的.ssh文件下面。

  拷贝id_rsa.pub到tmp目录下,后面会用到

  cp ~/.ssh/id_rsa.pub yourname.pub

4、添加一个git用户

  sudo adduser git

5、安装gitolite

  切换到git用户

  su git

  进入git主目录

  cd /home/git

  创建bin目录

  mkdir bin

  下载gitolite

  git clone git://github.com/sitaramc/gitolite

  安装gitolite

  gitolite/install -ln ~/bin # please use absolute path here

  gitolite setup -pk /tmp/yourname.pub

6、克隆gitolite-admin 

  git clone git@127.0.0.1:/home/git/repositories/gitolite-admin #我是再本地模拟配置的,所以ip为本地

到此工作完成。

7、管理

Gitolite 会创建一个特殊仓库 gitolite-admin ,用于管理用户权限及仓库信息。

git clone git@host_git_repo:gitolite-admin

1、 添加用户
以添加位于主机 host-dev-1 的用户 dev_user_1 为例:

clone Gitolite 管理配置目录 gitolite-admin 到本地

将用户 dev_user_1 的 SSH 公钥保存到 gitolite-admin/keydir/ ,文件名要遵守 Gitolit 要求的格式:

* 不能将同一密钥分配给不同用户,虽然在其他情况下是没有任何问题的,但是 gitolite 是通过密钥来区分和检索不同用户的,我理解它的工作原理是,它读取 git 用户下 .ssh/authorized_keys 文件,读入为 Hash 结构,所以刷新该文件时,各条记录是无次序的,但是一个用户连接进来时,Gitolite 读取用户的公钥,并按文件 .ssh/authorized_keys 中公钥出现顺序比对,找到符合的第一个,然后确认就是该文件中公钥对应的用户,然后根据该用户确认权限。也就是说,即使连接的用户是位于主机 host-dev-1 的用户 dev_user_1 ,如果 .ssh/authorized_keys 中有用户 dev_user_2 的公钥与它相同,并且首先出现,那么 Gitolite 认为 dev_user_1 就是 dev_user_2 ,并使用 dev_user_2 的权限,这不是我们需要的
* 文件需要以 .pub 结尾,否则不能被 Gitolite 导入
* Gitolite 仍然支持(兼容)旧的命名规范,对于本例是 dev_user_1@host-dev-1.pub ,注意,host-dev-1 是用户所在主机名(或其它标识信息),在 Gitolite 权限配置文件 conf/gitolite.conf 中不应当出现。Gitolite 仍然支持 Email 地址形式的主机名,但必须至少存在一个 "**.**" ,比如 dev_user_1@gmail.com ,Gitolite 以此认定是一个 Email 地址,对于 dev_user_1@gmail-com ,它认为 gmail-com 是一个主机名(或其它标识信息),Email 形式的用户名需要完整地写在 Gitolite 权限配置文件 conf/gitolite.conf 中
修改权限配置文件 conf/gitolite.conf ,为该用户分配指定的权限,注意,用户名是 dev_user_1 ,而非 dev_user_1@host-dev-1 : repo DEV_REPO

RW+ = dev_user_1

提交到本地,然后推送到 gitolite-admin 远程仓库

2、删除用户
删除用户也很简单,删除用户的公钥,删除权限配置文件 conf/gitolite.conf 中的用户名

提交到本地,然后推送到 gitolite-admin 远程仓库

3、添加/删除仓库
如果是添加一个新的仓库,那么操作十分简单,直接在权限配置文件 conf/gitolite.conf 中添加该仓库名: repo New_DEV_REPO

提交到本地,然后推送到 gitolite-admin 远程仓库,Gitolite 会自动创建这个仓库

 gitolite all-in-one page

在Ubuntu下快速安装gitolite

git远程仓库创建及权限管理(二)多个项目的更多相关文章

  1. git远程仓库创建及权限管理(一)单个项目

    最近接手公司git权限管理,既然负责此事个人觉得应该深入学习下,不仅为当前工作也为进一步发展.网上查找了一番,找到了完整的教程,所以这里不再一步一步描述,具体链接已给出,本文只对操作过程中遇到的问题的 ...

  2. git远程仓库创建及代码提交

    git仓库创建:1. mkdir project-repertory2. cd project-repertory3. git init --bare 此时,git仓库已成功创建. 本地要提交的代码在 ...

  3. 如何快速关联/修改Git远程仓库地址

    如何快速关联/修改Git远程仓库地址?按照如下步骤即可快速实现关联/修改Git远程仓库地址: 删除本地仓库当前关联的无效远程地址,再为本地仓库添加新的远程仓库地址 git remote -v //查看 ...

  4. Git 远程仓库的管理和使用

    要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...

  5. git 远程仓库 轻松创建

    很多时候,为了方面管理我们写的代码,我们采用git 远程仓库来进行管理和备份.防止代码被他人篡改或删除.那如何来进行创建远程仓库呢? 1.我们必须有一个远程服务器端,在这里可以把任意一台电脑作为服务器 ...

  6. Git 远程仓库默认权限问题的解决

    多人共同开发维护一个项目时,对整个项目文件互有拉取.推送等行为.为防止操作时文件权限出现冲突,可有以下2种方法解决: 1. 本地git的远端设置中,连接远程仓库时多人使用同一个用户名,该用户名为git ...

  7. GIT 远程仓库:添加远程库、从远程库克隆

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  8. Git -- 远程仓库简介

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  9. 10.Git远程仓库

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了.可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git ...

随机推荐

  1. 关于Linux下s、t、i、a权限

    文件权限除了r.w.x外还有s.t.i.a权限: 首先我们利用umask查看系统的权限为四位,首位就是特殊权限位,SetUID为4,SetGID为2,t为1 [root@iz2ze46xi6pjjj6 ...

  2. centos7安装libvirt支持xen

    另外还有一个非常棒的用法 假如我要执行iostat这个命令来查看CPU与存储设备状态,可是执行却发现没有这个命令 于是执行yum install iostat,结果说找不到该软件,使用下面的办法可以解 ...

  3. jmeter===JMeter 中Random 随机函数的使用(转)

    原文:http://blog.csdn.net/dreamtl/article/details/68952272 场景:在做接口测试时,比如说要求用户的手机号码不允许重复,那此时可以通过Random ...

  4. iptables 操作

    iptables --list 查看列表 iptables删除规则 iptables -nL --line-number Chain INPUT (policy ACCEPT)num target p ...

  5. MySQL的读写分离---主从复制、主主复制

    1.复制是基于BinLog日志 存在三种日志格式:Statement:存储Sql语句,存储日志量是最小的.有可能复制不一致Row:存储event数据,存储日志量大,但是不能很直接进行读取:Mixed: ...

  6. Django web框架之权限管理一

    1. 需求分析: 准备:创建独立app, rbac #权限管理模块/组件 app01 #应用 分配权限,URL 2. 数据库设计 2.1 设计思路 第一版: 权限表: ID url title is_ ...

  7. APP线上问题收集信息整理

    常话说“软件是不能保证百分百没有bug的”,因此当我们的APP上线之后,市场的使用人员会反馈一些我们测试人员可能在测试时遗漏的问题,包括也不防会有一些需求的反馈,这些问题均由售后人员反馈整理,以一种方 ...

  8. 197. Rising Temperature

    Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to ...

  9. [译]怎样在Vue.js中使用jquery插件

    原文:http://gambardella.info/2016/09/05/guide-how-to-use-vue-js-with-jquery-plugins 使用Vue真的太棒了,但是也有可能使 ...

  10. macos不能打开windows samba共享问题(转载)

    转自:https://www.macx.cn/thread-2095377-1-1.html?mod=viewthread&tid=2095377&extra=page%253D1&a ...