javaee论坛

普通会员

225648

帖子

345

回复

359

积分

楼主
发表于 2019-11-01 17:36:29 | 查看: 82 | 回复: 2

文章目录关于GitGit介绍GitVSSVN为什么选择Git?在Ubuntu上搭建Git服务器安装环境安装Git创建Git管理员禁止git用户从shell登录创建Git服务路径启用RSA认证创建证书管理文件版本库管理创建版本库删除版本库用户权限管理增加用户删除用户

关于GitGit介绍

Git是什么?傻瓜内容跟踪器(Thestupidcontenttracker)!Git创始人、Linux之父LinusTorvalds就是这样介绍Git的。

Git是用于Linux内核开发的版本控制工具。与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,服务器端软件支持不再是必需项,这使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linuxkernel这样的大项目来说自然很重要。Git最为出色的是它的合并跟踪(mergetracing)能力。

实际上内核开发团队决定开始开发和使用Git来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是Git太艰涩难懂,从Git的内部工作机制来说,的确是这样。但是随着开发的深入,Git的正常使用都由一些友好的脚本命令来执行,使Git变得非常好用,即使是用来管理我们自己的开发项目,Git都是一个友好,有力的工具。现在,越来越多的著名项目采用Git来管理项目开发。

作为开源自由原教旨主义项目,Git没有对版本库的浏览和修改做任何的权限限制。作为管理员,选择Git前一定要明白这句话意味着什么。

目前Git已经可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法类似,Windows版本的Git提供了友好的GUI(图形界面),安装后很快可以上手。

GitVSSVN

Git是分布式的。这是Git和其它非分布式的版本控制系统(例如SVN,CVS等)最核心的区别;

Git把内容按元数据方式存储,而SVN是按文件存储,所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn或.cvs等的文件夹里;

Git分支和SVN的分支不同。分支在SVN中没有特别含义,仅是版本库中的另外的一个目录;

Git没有一个全局的版本号,而SVN有。目前为止这是跟SVN相比Git缺少的最显著的特征;

Git的内容完整性要优于SVN。Gti的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

为什么选择Git?Git是分布式的版本控制系统,不必依赖于服务端即可工作;Git为开发者提供了更多的独立于团队之外的空间;Git展现了不同于大多数人的软件开发管理理念,有助于拓展开发者视野。在Ubuntu上搭建Git服务器安装环境

操作系统:Ubuntu1404硬件配置:阿里云主机,双核CPU,4G内存

安装Git

Git的安装非常简单,一般不会出现问题。为了保险起见,安装之前,先update一下。

root@xufive:~#sudoapt-getupdateroot@xufive:~#sudoapt-getinstallgit创建Git管理员

如前所述,Git没有对版本库的浏览和修改做任何的权限限制。既然合法的用户都拥有最高权限,那么服务端区别哪一位用户的服务请求就没有价值了,因此所有的客户端访问服务器时,使用的是同一个用户账号。假定该用户名为git,git同时也是Git服务器的管理员。

root@xufive:~#sudoaddusergit

请务必牢记并妥善保管git用户的密码。

禁止git用户从shell登录

使用Git服务器的程序员需要知道Git用户密码,出于安全考虑,Git服务器通常会禁止git用户从shell登录。此举会导致程序员无法从客户端向服务器提交SSH证书公钥,必须通过管理员才能添加SSH证书公钥,继而成为合法的Git服务使用者。

编辑/etc/passwd文件,将

git:x:1000:1001:,,,:/home/git:/usr/bin/git-shell

改为

git:x:1000:1001:,,,:/home/git:/bin/bash创建Git服务路径

在规划的路径下创建git文件夹,并将所有者设置为git用户。

root@xufive:~#cd/sdyouthroot@xufive:~#mkdirgitroot@xufive:~#chown-Rgit:gitgit启用RSA认证

进入/etc/ssh目录,编辑sshd_config,打开以下三个配置的注释:

RSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile%h/.ssh/authorized_keys

保存并重启sshd服务:

root@xufive:~#/etc/init.d/sshrestart创建证书管理文件

在/home/git/下创建目录.ssh文件夹,进入该文件夹创建authorized_keys证书文件:

root@xufive:~#cd/home/gitroot@xufive:~#mkdir.sshroot@xufive:~#chown-Rgit:git.sshroot@xufive:~#cd.sshroot@xufive:~#cat>authorized_keys

按Ctr+d结束cat命令,创建空的authorized_keys证书文件。

至此,Git服务器已经配置完成。不过,要想测试的话,至少还需要两步:

创建版本库(详见版本库管理)添加用户(详见用户权限管理)版本库管理创建版本库

执行以下命令,即可创建项目名称为xufive的版本库:

root@xufive:~#cd/sdyouth/gitroot@xufive:~#sudogitinit--barexufive.gitroot@xufive:~#chown-Rgit:gitxufive.git删除版本库

危险行为,谨慎操作!

root@xufive:~#cd/sdyouth/gitroot@xufive:~#sudorm-rfxufive.git用户权限管理增加用户

正如前文所说,Git服务器并不在意你是谁,而更在意你是否合法。管理员只要将合法用户提供的数字证书公钥添加到authorized_keys证书文件中,该用户就可以使用Git服务了。用户如何生成自己的数字证书,在我的另一篇博文《Git学习笔记——程序员篇》中有详细说明。

root@xufive:~#cd/home/git/.sshroot@xufive:~#cat>>authorized_keys

粘贴用户提供的公钥文件内容后,按Ctr+d结束cat命令。

特别提示:

cat>>authorized_keys以追加方式写入从标准输入设备输入的内容cat>authorized_keys以覆盖方式写入从标准输入设备输入的内容

删除用户

只要从authorized_keys文件中删除用户的证书,该用户就不再是合法用户了。问题的关键是如何从authorized_keys文件中找到欲删除用户的数字证书。事实上,这不是问题,因为用户在生成数字证书时,需要输入一些信息,这些信息在数字证书中以明文显示。


普通会员

0

帖子

313

回复

324

积分
沙发
发表于 2024-01-30 03:53:49

我喜欢

普通会员

0

帖子

329

回复

334

积分
板凳
发表于 2024-04-26 20:08:00

不错

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017