【发布时间】:2023-04-06 17:00:03
【问题描述】:
我目前正在尝试设置一个 GIT 存储库服务器,以便我们可以从 SVN 切换到 GIT。我几乎涵盖了所有内容,但还有一个问题。
目前的设置如下:
- 所有开发人员(和非开发人员)都有一个用户帐户和正确的组,因为服务器是 NIS 客户端
- 所有 repos 都在 /var/git/ 中进行
- 所有拉/推都通过 ssh 完成
到目前为止,这非常有效,并且无需使用 gitosis 或 gitolite。
因为我想对我设置的 gitweb 包括 pathinfo 的存储库有一个可浏览的概述。因为 repos 是私有的,所以我已经通过 Perl AuthenNIS 设置了身份验证并且这可以工作,但是在这里我遇到了一个问题。
不希望所有开发人员都可以访问所有存储库,但 gitweb 只显示它(apache 用户)可以读取的每个存储库。
所以我的问题是:是否可以让 gitweb 只显示当前登录用户有权访问的 GIT 存储库?
可能的解决方案:
- 通过 .htaccess 进一步控制访问。 pathinfo 将启用此功能,但不会阻止通过非路径信息 URL 访问 repo(例如 /repo.git/ 不起作用,但 /gitweb.cgi?p=repo.git 会)
- 设置完整的 gitosis/gitolite 环境并将其集成到 gitweb(本质上是 this)。我想防止这种情况发生,因为开销是不可取的
- 让 gitweb 以经过身份验证的 HTTP 用户身份运行。这将解决所有访问控制问题,但我不知道该怎么做
- gitweb 的
$export_auth_hook结合$cgi->remote_user看起来很有希望,但是我对perl 的理解太有限而无法使用它(钩子需要在显示/导出之前验证用户是否有权访问repo 目录)
有没有人知道如何使 3 或 4 起作用或有其他解决方案?
【问题讨论】:
标签: perl git authentication gitweb