文章目录

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

关于Git

Git 介绍

Git 是什么?傻瓜内容跟踪器(The stupid content tracker)!Git 创始人、Linux 之父 Linus Torvalds 就是这样介绍 Git 的。

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

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

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

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

Git VS SVN

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

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

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

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

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

为什么选择Git?

  1. Git 是分布式的版本控制系统,不必依赖于服务端即可工作;
  2. Git 为开发者提供了更多的独立于团队之外的空间;
  3. Git 展现了不同于大多数人的软件开发管理理念,有助于拓展开发者视野。

在Ubuntu上搭建Git服务器

安装环境

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

安装 Git

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

root@xufive:~# sudo apt-get update
root@xufive:~# sudo apt-get install git

创建 Git 管理员

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

root@xufive:~# sudo adduser git

请务必牢记并妥善保管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 /sdyouth
root@xufive:~# mkdir git
root@xufive:~# chown -R git:git git

启用 RSA 认证

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

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

保存并重启 sshd 服务:

root@xufive:~# /etc/init.d/ssh restart

创建证书管理 文件

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

root@xufive:~# cd /home/git
root@xufive:~# mkdir .ssh
root@xufive:~# chown -R git:git .ssh
root@xufive:~# cd .ssh
root@xufive:~# cat > authorized_keys

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

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

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

版本库管理

创建版本库

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

root@xufive:~# cd /sdyouth/git
root@xufive:~# sudo git init --bare xufive.git
root@xufive:~# chown -R git:git xufive.git

删除版本库

危险行为,谨慎操作!

root@xufive:~# cd /sdyouth/git
root@xufive:~# sudo rm -rf xufive.git

用户权限管理

增加用户

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

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

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

特别提示:

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

删除用户

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

Git 学习笔记——管理员篇相关推荐

  1. Git 学习笔记:自定义Git(完)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  2. Git学习笔记(2) --- References探寻

    在上一篇文章Git学习笔记(1) --- 内部存储模式中,已经说了git的内部存储模式以及.git/objects文件中的内容,这一篇文章主要讲讲git内部的references. Reference ...

  3. Git 学习笔记:6 GitHub

    Git 学习笔记:6 GitHub 账户的 创建和配置 SSH访问 头像 邮件地址 两步验证 对项目做贡献 派生(fork)项目 GitHub 流程 创建合并请求 利用合并请求 合并请求的进阶用法 将 ...

  4. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  5. Linux学习笔记---命令篇

    Linux学习笔记-命令篇 本笔记是根据尚硅谷的Linux视频,经过自己的总结得出来的笔记,分为两个大章节,一-四章讲的是Linux的文件目录结构.vim编辑器.网络配置和系统管理.进程和服务.第二个 ...

  6. Git 学习笔记:5 分布式工作流程

    Git 学习笔记:5 分布式工作流程 分布式工作流程 集中式工作流 集成管理员工作流 司令官与副官工作流 工作流程总结 向一个项目贡献 提交准则 私有小型团队 John's Machine 私有管理团 ...

  7. 《攻防世界》学习笔记——web篇

    <攻防世界>学习笔记--web篇 01 Robots协议 02 BACKUP 03 Cookie 04 disabled_button(chrome游览器F12指南) 05 弱口令 06 ...

  8. [mmu/cache]-ARM MMU的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...

  9. [mmu/cache]-ARM cache的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...

  10. ​​​​​​​Git学习笔记与IntelliJ IDEA整合

    2019独角兽企业重金招聘Python工程师标准>>> Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:htt ...

最新文章

  1. 科技巨头纷纷从刷脸转向“刷手”,指纹如何扛起生物识别大旗?
  2. 节能信标组雌雄双煞 - 来自于洛阳理工学院信标组的车模
  3. java中怎么进行字符串替换?
  4. HDU1016(DFS)
  5. [html]HTML5如何隐藏video元素的控制栏、全屏按钮?
  6. 随想录(关于pthread的使用方法)
  7. javaWeb企业分布式、互联网、云开发平台-Jeesz
  8. html5站点是什么意思,html5是什么意思(html5是什么技术)
  9. mcafee迈克菲官网由于验证缺陷,导致暴力破解到企业授权号获取到所有企业用户的Grant number
  10. js 打开选择本地文件对话框 及 获取选择文件中的内容
  11. python中实现如何强制删除非空文件夹
  12. this指向情况详解
  13. 使用测温软件EVEREST和鲁大师的一些总结
  14. BUUCTF Crypto BabyRSA
  15. ​防火墙国标正式实施|美创科技解读数据库防火墙关键能力
  16. 中国推出网上“防沉迷系统”
  17. Windows API程序设计入门(新手的第一个Windows程序)
  18. phalapi可以依赖注入么_phalapi-进阶篇2(DI依赖注入和单例模式)
  19. 使用java.awt.Robot实现java版的自动点击事件
  20. python回调廖雪蜂_廖雪峰Python总结4

热门文章

  1. 计算机在材料科学中的应用上机二,计算机在材料科学与工程中应用综合实验
  2. codeforce 741 B. Arpa's weak amphitheater and Mehrdad's valuable Hoses(背包 dp)
  3. Python-接口自动化(四)
  4. R语言入门-常用的向量运算
  5. 后台批量刷新金蝶K3物料名称操作步骤
  6. O365(世纪互联)SharePoint 之使用列表库发布新闻
  7. 基于HuTool工具实现Excel复杂表头生成、单元格合并绘制对角线(计算N叉树的最大深度和最大宽度)
  8. springcloud阿里巴巴五大组件_阿里巴巴内部独家微服务全解手册已“重现江湖”大厂核心技术,你确定不了解一下?...
  9. android如何用mumu模拟器,如何安装网易MuMu模拟器 MuMu模拟器怎么用
  10. IOS 13陀螺仪监控