gitlab、gitolite的权限管理是怎么运作,实现原理?

发布于 2022-08-31 20:39:11 字数 260 浏览 7 评论 0

git分布式代码版本控制并没有太多的权限控制的功能,依赖的是系统的用户授权认证的方式。
对于团队协作管理来说依然不是很方便,因此有了gitlab、gitolite等对git改进、功能扩展的系统。

但对于他们是怎么实现的权限控制,这方面资料不是很多,不是很清楚。

登录认证方面,都是使用ssh的authorized_keys实现的对公用用户git的认证访问。
虽然限制了git用户的shell登录访问,但他是怎样做到对不同代码库的可见、可读的权限控制的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

聆听风音 2022-09-07 20:39:11

Gitlab 还不成熟的时候我在公司用 Gitolite 搭了一套服务,用了三年多了,挺好的,就是搭建起来比较累,坑也多,挺考验动手能力的,而且那一套管理操作也没有后来 Gitlab GUI 式的界面来的直观。

Anyway,你的问题当时我也研究过,Gitolite 的文档里有很多这方面的描述,你可以从这里开始 http://gitolite.com/gitolite/overview.html,重点在第三节。

简言之,Gitolite 提供了一层 shell,插在 sshdgit-receive-pack 的信道之间,它确保通过 ssh 发送给 git 的命令先要经过这层 shell 的鉴权。

樱娆 2022-09-07 20:39:11

http://gitolite.com/gitolite/how.html
看下官方在线slides 一目了然

已下线请稍等 2022-09-07 20:39:11

2年前用gitolite,当初也研究了下,按照我的理解说明下:
1、所有用户都利用git的账户,通过ssh连接git服务器,当你将keys推送到gitolite的admin仓库后,该仓库的钩子会自动将你的key加入到git用户的authorized_keys文件中,以允许连接;

2、git账户的登录shell,被接管了,当你试图通过shell来访问的时候,会直接显示你私钥的账号对应信息和拥有权限的仓库列表;

3、当你每次通过git指令与远程的git仓库通讯的时候,远程的git仓库部署有钩子程序(?),该程序会检测你对应的shell账号(账号是git,对应公钥解析出来有个用户名,权限配置在该用户名上),是否有权限执行该命令。

大致就是这样,主要利用ssh的自定义shell,还有git仓库可以配置钩子shell的机制。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文