Git 权限控制原理
来源:互联网 发布:java职业规划5年计划 编辑:程序博客网 时间:2024/05/22 04:30
Git是一款可以替代SVN对代码版本进行管理的工具,近几年,这款由大神Linus开发,托管着linux核心代码的小软件大有在国内彻底取代SVN的架势。
Git虽说很强大,不论是多分支开发,分布式代码库都像重庆小火锅一样让人吃上一口就再也无法停下来,但是Git也有一个很“严重”的问题,那就是没有权限控制功能。Git的创建是作为开源社区的代码版本管理工具而存在的,但当我们把Git引入到团队内部的开发流程中后就会发现没有权限控制的GIT无法保护核心代码的安全,有时候一段错误的代码神不知鬼不觉的出现在底层类库中造成灾难性的后果。
幸好还有SSH。
由于Git的主流连接方式是SSH连接,因此当我们试图控制一个Git中心库权限的时候,可以通过控制SSH登录用户的权限来间接的达到目的。
那如何控制SSH的用户权限呢?既然我们SSH到中心库的时候用的可能都是GIT用户(Linux的用户),又如何区分到底真是用户是谁呢?这里就不得不说SSH的公私钥模式,当我们将某一个用户生成的公钥添加到GIT用户的 ~/.ssh/authorized_keys 文件后,以该用户身份SSH连接到GIT用户时可以免去输入密码的步骤。而Git权限控制的关键环节就在这个authorized_keys文件中。
一般典型的authorized_keys文件每一行都是一个公钥串,简单直接,但其实这个文件可以支持更丰富的SSH连接模式,请看下方的截图
很显然,这里面除了公钥之外还包括几个其他的配置:
command:以该公钥对应的私钥登陆后执行的厨师命令
no-xxxxx:表示不支持该模式的连接
最后才是对应的公钥。
如此配置的话,如果用户试图使用SSH默认连接方式会得到如下的返回结果
这样可以限制用户不可以毫无顾忌的连接到Git用户进而绕过SSH的权限控制系统。而每次Git的push/pull/clone等操作其实都是一次SSH连接从而激活command命令而执行脚本。
那么剩下的就好解释了,脚本接受参数,然后去做用户权限的判断,如果用户具有权限那么直接执行SSH连接附带的命令请求,如果没有权限直接exit 1就好啦。
- Git 权限控制原理
- git进行权限控制
- Git 权限控制
- Git 版本控制原理
- [推荐] Git的权限控制
- [推荐] Git的权限控制
- git本地控制分支权限
- git服务器搭建及权限控制
- git多用户管理及权限控制
- mysql基础-mysql权限控制的原理
- Dynamics AX2012 标准权限控制工作原理
- 版本控制(六)--git介绍&原理
- 用 gitolite搭建git server实现权限控制(1)
- 用 gitolite搭建git server实现权限控制(2)
- 使用Gitolite来对Git的repository实现权限控制
- 创建带权限控制的git server(使用gitolite)
- 实用PHP会员权限控制实现原理分析
- 实用PHP会员权限控制实现原理分析 .
- 【经验】使用Profiler工具分析内存占用情况
- CentOS6.4 配置iptables
- 程序员的圈子
- JAVA_SE基础——71.Random类制作随机验证码
- iOS 直播功能的实现
- Git 权限控制原理
- NSCache和NSURLCache网络缓存优化
- Python_LDA实现
- 用递归写的一个简单树结构
- Python3.x和Python2.x的差异对比
- 1.2 字符串翻转
- node.js学习笔记(一)
- Unity IOS本地消息通知LocalNotification的使用—推送功能
- 国外空间VPS云测试比较