搭建基于Gitosis权限管理的GIT服务器

2024-08-22 05:52

本文主要是介绍搭建基于Gitosis权限管理的GIT服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在越来越多的开源项目使用git来进行管理,而git是分布式的,没有严格的界限来区分客户端和服务器,而我们习惯上都需要有一台服务器来控制的,故而接下来的实验中会使用一台机器来作为服务器角色并在上面安装上Gitosis的权限管理系统(当然也可以使用Gitolite),此次我们的实验环境是VMware上面安装了Ubuntu的虚拟机1台(同时充当服务器和客户端),下面是整个实验过程的记录:

1.安装上git工具(服务器和客户端都须安装):

    sudo apt-get install git-core

2.安装Gitosis(仅服务器上需要安装):

    sudo apt-get install python-setuptools
    mkdir ~/src
    cd ~/src
    git clone https://github.com/res0nat0r/gitosis.git
    cd gitosis/
    sudo python setup.py install

3.创建一个git帐号(仅服务器上):

    sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git

4.生成SSH密钥对(仅客户端上):

    ssh-keygen

    命令执行过程中全部按“回车”键默认配置,最终会在~/.ssh目录下生成id_rsa和id_rsa.pub一对密钥。接下来将生成的id_rsa.pub公钥复制到服务器上(一般使用scp命令,由于我们在同一台机器,故该步省略)

5.将公钥导入初始化gitosis(在服务器上)

    sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub

    运行该命令后有如下提示(上述公钥对应的用户用于默认情况下的gitosis库管理员):

Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

此时我们的公钥将会被导入到/home/git/repositories/gitosis-admin.git/gitosis-export/keydir目录下,名称为xinu@x-slam.pub,该名字可随意更改,只要与配置文件/home/git/repositories/gitosis-admin.git/gitosis.conf里内容一致即可,配置文件默认内容如下:

[gitosis]

[group gitosis-admin]
members = xinu@x-slam
writable = gitosis-admin

    从上面内容可看出,我们可以分组管理来配置权限。

6.修改gitosis权限

    sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

    主要作用是当更新gitosis-admin库时要更新服务器上的gitosis-export目录需要有权限。

7.管理项目与用户

    对于刚才安装好的gitosis权限管理服务,我们不能在服务器上直接修改相关配置,于是我们会在客户端先将该管理工程克隆下来:

git clone git@127.0.0.1:gitosis-admin.git

    其中,git@127.0.0.1中git为用户名,而127.0.0.1是服务器IP,gitosis.git是项目名,运行上面命令会有如下提示:

ssh: connect to host 127.0.0.1 port 22: Connection refused
fatal: The remote end hung up unexpectedly

    是由于服务器端没有安装SSH服务导致,于是执行如下命令进行安装:

    sudo apt-get install openssh-server

    接下来再在客户端重新执行克隆操作命令,会在当前目录下生成gitosis-admin目录,该目录下有gitosis.conf配置文件和keydir目录,以后我们通过将新用户的公钥放至keydir目录,并个性gitosis.conf文件,再将其通过git add、git commit和git push命令更新服务器上的相应文件即可添加新服户了。

     那么要如何创建自己的项目并上传到服务器上呢?首先先要修改下权限:

     修改上面克隆下来的gitosis-admin目录下的gitosis.conf文件,将writable = gitosis-admin修改为writable = gitosis-admin ourProject,然后保存后再执行如下命令:

     git commit -m "Add ourProject permission"
     git push

     下面是相应的步骤(均在客户端下操作):

     1).创建目录ourProject:

           mkdir ourProject

     2).进入创建的目录并创建一文件:

           cd ourProject
           echo "test" > xinu

    3).创建git本地库:

          git init

    4).将xinu文件添加到本地库中:

          git add xinu

    5).将添加的文件提交到本地库中:

          git commit -m "Add new project and file 'xinu'"

    6).创建远程库

          git remote add origin git@127.0.0.1:ourProject.git

    7).将本地库上传到远程库

          git push origin master

    成功上传后,在服务器的/home/git/repositories目录下会多出ourProject.git目录,这就是我们刚创建的工程了。至此,使用Gitosis来搭建可权限管理的Git服务器就体验了一次,后面再找个时间好好学习下gitosis.conf配置文件的规则和使用repo来创建库的过程了。

这篇关于搭建基于Gitosis权限管理的GIT服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095423

相关文章

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

Linux权限管理与ACL访问控制详解

《Linux权限管理与ACL访问控制详解》Linux权限管理涵盖基本rwx权限(通过chmod设置)、特殊权限(SUID/SGID/StickyBit)及ACL精细授权,由umask决定默认权限,需合... 目录一、基本权限概述1. 基本权限与数字对应关系二、权限管理命令(chmod)1. 字符模式语法2.

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx