阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用 Gitolite 搭建 Git 服务器

397次阅读
没有评论

共计 3558 个字符,预计需要花费 9 分钟才能阅读完成。

Gitolite 是在 Git 之上的一个授权层,依托 sshd 或者 httpd 来进行认证。(认证是确定用户是谁,授权是决定该用户是否被允许做他想做的事情)。

通过 Gitolite 你可以设置访问权限,不只作用于仓库,还可以作用到每个 branch 和 tag name。你可以定义确切的人 (或一组人) 只能 push 特定的 “refs” (或者 branches 或者 tags)。

写在前面

如果你熟悉 Git 和 SVN 的区别,相信你不会认为 Git 服务器有多复杂。而事实上,搭建一个无需授权管理的 Git 服务器确实很简单。因为这个服务器仅仅是一个远程裸仓库(无工作区),用来作为 24 小时开机的交换中心而已。如果你的需求如此简单,参考 Ubuntu Git 安装与使用 http://www.linuxidc.com/Linux/2016-11/136769.htm

如果你还没离开,那接下来,我们聊聊 Git 的权限管理这点事儿。Git 本身是不支持权限控制的,可能它也不想这么做。由于 Git 支持钩子(hook),因此可以在服务器端编写一系列脚本来控制 Git 的各种操作,达到权限控制的目的。

Gitolite 只是 Git 权限管理工具中的一种,具有同样功能的还有:

  • GitLab 可以说是 GitHub 的开源版本,一开始是使用 Gitolite 作为授权管理的解决方案,后来因为两个项目的开发和同步等方面出现问题,在 2013 年 2 月,GitLab 宣布与 Gitolite 分道扬镳。总之,GitLab 是一个重量级的版本,要使用它,你需要安装很多额外的软件,如 PostgreSQL, Redis, Sidekiq, Unicorn, nginx and gitlab-shell 等。所以说,它是资源密集型的,但功能确实强大,也更有利于开发团队的高效率协作,比较适合大型团队。

  • Gitosis 和 Gitolite 没什么区别,只是这个项目已经停止维护了,所以我也懒得去费时间进行了解,这里只是提一下。

  • 其他 肯定会有其他的解决方案,只是我觉得知道以上的就足够了。

简单介绍

到现在我们也只是知道,Gitolite 是一款 Git 授权管理工具,那么它具体是怎样的呢?我们姑且从它的几个特性来简单了解下:

  • 在服务器端,使用一个 unix 用户作为远程访问的对象

  • 为多用户提供访问权限,但他们不是真正的用户,不会获得 shell 权限

  • 控制对多个 git 仓库的访问,读访问被 repo 层控制,写访问在 branch/tag/file/directory 层控制,包括谁能够 rewind,create 以及 delete branches/tags

  • 能够不经过 root 允许进行安装,假设 git 和 perl 已经被安装了(这句话不懂,暂时直译过来)?

  • 认证通常采用 sshd,但是也可以使用 httpd

  • 能够简化你的仓库路径,类似 GitHub 那样,例如:git@your_server.com:your-project.git

开始搭建

  1. (服务端)切换到 root 身份

    su - root

  2. (服务端)安装依赖

    apt-get install git-core ssh

  3. (服务端)创建一个用户供 Gitolite 使用:

    useradd --system --shell /bin/bash --create-home git

  4. (服务端)设置密码

    passwd git

  5. (客户端)生成 SSH 公钥并复制到服务器的 git 家目录

    cd ~

    ssh-keygen

    scp ~/.ssh/id_rsa.pub git@your_server:admin.pub

  6. (服务端)安装 Gitolite

    su - git

    mkdir bin

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

    ~/gitolite/install -to ~/bin

    # 将你的公钥 admin.pub 设置为 Gitolite 超级管理员
    ~/bin/gitolite setup -pk ~/admin.pub

  7. (客户端)克隆神奇的授权管理仓库

    # 如果克隆成功,说明 Git 服务器已经搭建完成。
    git clone git@your_server:gitolite-admin

使用方法

  1. 添加 Gitolite 项目成员

    将项目成员通过 ssh-keygen 命令生成的公钥文件重命名成唯一标识的文件,如 macken.pub,然后放到 gitolite-admin/keydir 目录下,addcommitpush之后,这样新成员就算加入了。新成员默认可以克隆任何没有被权限控制的仓库,如 Gitolite 自带的 “testing”。

  2. 创建 Gitolite 项目仓库

    仓库的创建不需要你登录服务端,只需要用编辑器打开 gitolite-admin/conf/gitolite.conf,加入两行:

    repo new_repo

    RW = macken

    然后将变动提交到服务器,远程的 Gitolite 就会自动帮你创建好一个空仓库并分配给 macken 读写的权限。是不是很方便?

  3. 项目授权管理

    • 要方便的进行授权,那就有必要将项目的成员分组:

      @admins = macken steven

      @interns = ashok

      @engineers = macken steven wally alice

      @staff = @admins @engineers

    • 可以对仓库的分支和标签进行正则匹配授权:

      repo @oss_repos

      RW int$ = @interns

      RW eng- = @engineers

      RW refs/tags/rc[0-9] = @engineers

      RW+ = @admins

      interns 组只能对以“int“结尾的分支有读写权限;

      engineers 组可以对以“eng-“开头的分支以及该仓库的“rc[0-9]“的标签分支有读写权限;

      admins 组则对本仓库所有的分支有读写权限,而且“+”代表可以有强推的权限。

      其它更详尽的授权设置请参阅 官方文档

写在最后

Git 是极具开源精神的分布式版本控制系统,但并不意味着在 Git 基础上加上授权控制是有什么不妥,目的不在于防着谁,而在于明确职责划分,方便协调管理,避免因为任何人都可以接触所有代码而产生不必要的麻烦。就像 GitHub 那样,任何人都可以 fork 别人的项目,从而生成一个分支到自己的仓库,但你无法直接操作别人的 master 分支,只能由项目的创建者根据你提交的 PR 来进行 merge。这样,才是一个有秩序的开源实践。

最后,推荐一篇关于 Git Workflow 的经典老文:A successful Git branching model。

更多 Git 教程系列文章

GitHub 使用教程图文详解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 使用图文详细教程  http://www.linuxidc.com/Linux/2016-11/136781.htm

Ubuntu Git 安装与使用 http://www.linuxidc.com/Linux/2016-11/136769.htm

Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 服务器搭建与客户端安装  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm 

Git 从入门到学会 http://www.linuxidc.com/Linux/2016-10/135872.htm

Git 基本操作详解 http://www.linuxidc.com/Linux/2016-10/135691.htm

Git 部署与常用基本命令详解   http://www.linuxidc.com/Linux/2017-06/144961.htm

分布式版本控制系统 Git 详细教程  http://www.linuxidc.com/Linux/2017-05/143747.htm

Git 的详细介绍:请点这里
Git 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145765.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3558字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7999305
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...