搭建基于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

相关文章

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT