热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux使用Gitolite架设GitServer

单纯使用SSH架设可见此篇:Linux架设使用SSH共享存取的GitServer想要控管UserProject权限,而且还想要控管branchtag等读写权限,则需要靠Gitolite等套件来协助.gitolite?SSH-basedgatekeeperforgitrepositories此篇主要写的是

单纯使用 SSH 架设可见此篇: Linux 架设使用 SSH 共享存取的 Git Server

想要控管 User / Project 权限, 而且还想要控管 branch / tag 等读写权限, 则需要靠 Gitolite 等套件来协助.

  • gitolite ? SSH-based gatekeeper for git repositories

此篇主要写的是 Gitolite 架设, 若之前已经有依照上述文章架设共享存取的 Git Server, 而 Gitolite 也想用 git 的帐号来管理, 则需做下述动作先改回原始设定.

注: 此文会用 gitolite 的帐号来管理, 不会用 git 帐号, 所以不需要做下述更改的动作

  1. vim /etc/passwd

    git:x:1000:1000::/home/git:/usr/bin/git-shell
    改回
    git:x:1000:1000::/home/git:/bin/sh

  2. mv /home/git/.ssh/authorized_keys /home/git/.ssh/authorized_keys.bak

相关资料准备

  • 系统: Debian / Ubuntu Linux
  • Server: example.com
  • Project name: project_name
  • Gitosis (Git) Repository 位置: /var/lib/gitolite/repositories # Debian / Ubuntu Linux 套件默认位置
  • Group name: myteam

系统套件安装

  • apt-get install gitolite git-core
  • 安装完成会出现此讯息: No adminkey given ? not initializing gitolite in /var/lib/gitolite.
  • 相关设定参考可见 /etc/gitolite/example.conf, /etc/gitolite/example.gitolite.rc

产生 SSH 公钥

  1. ssh-keygen -t rsa # 产生 id_rsa, id_rsa.pub
  2. mv id_rsa ~/.ssh/ # 将 id_rsa 放在 ~/.ssh/ 内.
  3. scp id_rsa.pub example.com:/tmp/user1.pub # 将 id_rsa.pub 丢到 Server 上, 大家的 public key 都需要传到 Server 上.
  4. scp id_rsa.pub example.com:/tmp/admin.pub # 管理者的 key 同 user key, 在此设为 admin.pub, 避免下述内容造成混淆.

Gitosis Server 架设

  1. ssh example.com # Git Server
  2. sudo su ? gitolite
  3. gl-setup /tmp/admin.pub # 汇入管理者的 Public key. 注意: 此档名即是帐号名称, 不要使用 id_rsa.pub 当档名, 建议用 "帐号.pub" 当档名
  4. exit

Gitolite Server 设定专案、新增帐号

  1. Gitolite 的专案权限 / 帐号管理 是使用 Git 来管理, 专案名称: gitolite-admin.git
  2. git clone gitolite@example.com:gitolite-admin # 因为 Gitolite 是用 gitolite-admin.git 来管理, 所以需要抓下来修改、设定(未来所有管理也是如此)
  3. cd gitolite-admin # 会看到下述
    • conf/gitolite.conf # 设定档, 设定谁可以读写哪个专案的 Repository
    • keydir # 目录, 放每个帐号的 public key. 放置的档案命名: user1.pub, user2.pub (user1, user2.. 为帐号名称(档名 = 帐号), 建议使用 "帐号.pub" 当档名)

设定专案权限

  1. cd gitolite-admin
  2. vim conf/gitolite.conf # 会看到下述, 不要动他, 于最下方设定自己的 Group / 专案名称即可.

    repo    gitolite-admin
     RW+     =   admin
    repo    testing
     RW+     =   @all

  3. 由此档案 新增 / 修改后, commit + push 即可.

建立专案

  1. git clone gitolite@example.com:testing # 对应 gitolite.conf 的 repo testing, 会出现下述讯息

    Cloning into testing…
    warning: You appear to have cloned an empty repository.

  2. cd testing
  3. touch readme
  4. git add .
  5. git commit -m ‘add readme’
  6. git push origin master

新增帐号

  1. cd gitolite-admin
  2. cp /tmp/user1.pub keydir/user1.pub # 请依照实际帐号命名, 不要取 user1, user2
  3. cp /tmp/user1.pub keydir/user1@machine.pub # 若相同帐号, 则使用 user@machine.pub
  4. cp /tmp/user2.pub keydir/user2.pub
  5. git add keydir/user1.pub keydir/user1@machine.pub keydir/user2.pub
  6. git commit -m ‘add user1, user1@machine, user2 public key’
  7. git push

gitolite.conf 更多设定条件

下述摘录自: Gitolite 构建 Git 服务器 ? 授权使用者建立属于自己的空间 (User 下面可以建 N 个 Repository), 在此就不记载, 请自行详见: 此文的 章节 2.4.3

# 取自 2.3.1 授权文件基本语法
@admin = jiangxin wangsheng

repo gitolite-admin
 RW+    = jiangxin

repo ossxp/.+
 C       = @admin
 RW     = @all

repo testing
 RW+                   =   @admin
 RW      master        =   junio
 RW+     pu            =   junio
 RW      cogito$        =   pasky
 RW      bw/           =   linus
 -                        =   somebody
 RW      tmp/           =   @all
 RW      refs/tags/v[0-9] =   junio

# 取自 2.3.3 ACL
repo testing
 RW+   = jiangxin @admin
 RW    = @dev @test
 R      = @all

gitolite.conf 语法说明

repo 语法
  • repo 语法: <权限> [零个或多个正规表示式批配的引用] = [ ...]
  • 每条指令必须指定一个权限, 权限可以用下面任何一个权限的关键字: C, R, RW, RW+, RWC, RW+C, RWD, RW+D, RWCD, RW+CD
    • C : 建立
    • R : 读取
    • RW : 读取 + 写入
    • RW+ : 读取 + 写入 + 对 rewind 的 commit 做强制 Push
    • RWC : 授权指令定义 regex (regex 定义的 branch、tag 等), 才可以使用此授权指令.
    • RW+C : 同上, C 是允许建立 和 regex 配对的引用 (branch、tag 等)
    • RWD : 授权指令中定义 regex (regex 定义的 branch、tag 等), 才可以使用此授权指令.
    • RW+D : 同上, D 是允许删除 和 regex 配对的引用 (branch、tag 等)
    • RWCD : 授权指令中定义 regex (regex 定义的 branch、tag 等), 才可以使用此授权指令.
    • RW+CD : C 是允许建立 和 regex 配对的引用 (branch、tag 等), D 是允许删除 和 regex 配对的引用 (branch、tag 等)
    • - : 此设定为不能写入, 但是可以读取
    • 注: 若 regex 不是以 refs/ 开头, 会自动于前面加上 refs/heads/
群组
  • @all 代表所有人的意思
  • @myteam user1 user2 : user1, user2 都是属于 myteam 这个群组

常用命令

下述全部都在 gitolite-admin.git 内操作

  • 新增帐号
    • cp /tmp/user1.pub keydir/user1.pub # 注意: 档名要取 "帐号.pub"
  • 新增专案
    1. vim conf/gitolite.conf # 增加 repo, 例如:

      repo testing
       RW @all

    2. git clone gitolite@example.com:testing
  • 设定专案
    • vim conf/gitolite.conf # 增加 repo, 设定读写群组、使用者的权限

相关文档

  • Gitolite 构建 Git 服务器 ? 使用 Gitolite, 推荐此篇必看

推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • python3.7 安装pip3_python3的pip3安装
    ---恢复内容开始---pip3的安装需要对应一整套python的编译工具库,所以安装好的pip3是这个样子:inearAi:~$pip3-Vpi ... [详细]
  • 系统安装Debian系统的安装方式和Ubuntu系统的安装方式几乎是一样的,毕竟Ubuntu系统是基于Debian的,就如同CentOS基于Redhat ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • 主流操作系统简介
    主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
author-avatar
Rony通_184_176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有