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

相关文章

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

kingbase修改权限实现方式

《kingbase修改权限实现方式》该文章详细介绍了如何在数据库中创建用户并赋予其相应的权限,包括创建用户、回收默认权限、创建数据库、赋权数据库权限、创建只读用户以及回收权限等步骤... 目录前言使用步骤总结前言创建用户后对数据库对象的读写权限进行修改使用步骤1、创建用户create user cs

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Elasticsearch 的索引管理与映射配置实战指南

《Elasticsearch的索引管理与映射配置实战指南》在本文中,我们深入探讨了Elasticsearch中索引与映射的基本概念及其重要性,通过详细的操作示例,我们了解了如何创建、更新和删除索引,... 目录一、索引操作(一)创建索引(二)删除索引(三)关闭索引(四)打开索引(五)索引别名二、映射操作(一

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res