gpt4 book ai didi

perl - 仅显示用户可以使用 gitweb 访问的 GIT 存储库

转载 作者:太空狗 更新时间:2023-10-29 13:25:52 25 4
gpt4 key购买 nike

我目前正在尝试设置 GIT 存储库服务器,以便我们可以从 SVN 切换到 GIT。我几乎涵盖了所有内容,但还有一个问题。

当前设置如下:

  • 所有开发人员(和非开发人员)都有一个用户帐户和正确的组,因为服务器是 NIS 客户端
  • 所有 repo 都是在/var/git/中制作的
  • 所有 pull/推都是通过 ssh 完成的

到目前为止,这工作得很好,并且消除了对 gitosis 或 gitolite 的需要。

因为我想对我设置的 gitweb 包括路径信息的存储库有一个可浏览的概述。因为 repos 是私有(private)的,所以我已经通过 Perl AuthenNIS 设置了身份验证并且这有效,但在这里我遇到了一个问题。

所有开发人员都可以访问所有存储库是不希望的,但 gitweb 只显示它(apache 用户)可以读取的每个存储库。

所以我的问题是:是否可以让 gitweb 只显示当前登录用户有权访问的 GIT 存储库?

可能的解决方案:

  1. 通过 .htaccess 进行进一步的访问控制。 pathinfo 将启用此功能,但它不会阻止通过非 pathinfo URL 访问 repo(例如/repo.git/不起作用,但/gitweb.cgi?p=repo.git 会)
  2. 设置完整的 gitosis/gitolite 环境并将其集成到 gitweb(本质上是 this)。我想避免这种情况,因为开销是不可取的
  3. 让 gitweb 作为经过身份验证的 HTTP 用户运行。这将解决所有访问控制问题,但我不知道该怎么做
  4. gitweb 的 $export_auth_hook$cgi->remote_user 的结合似乎很有前途,但我对 perl 的理解太有限而无法使用它( Hook 需要验证用户有权在显示/导出之前访问 repo 目录)

有没有人知道如何使 3 或 4 工作或有其他解决方案?

最佳答案

如果开发人员在(我假设)他们自己的用户名下使用 ssh 从存储库服务器推送/pull ,那么也许最简单的方法是找到运行 gitwebgit 在该用户的身份下。

例如,想办法在执行 gitweb 之前添加身份验证 Hook 。然后在 gitweb 周围添加一个包装器,执行 sudo -u $user gitweb.real 其中 $user 是经过身份验证的用户名。

或者,您可以只包装 git 命令,即让 gitweb 执行一个包装器,该包装器执行 sudo -u $user {real-git-path

要在 Apache 中实现针对 NIS/PAM 的身份验证,请查看 mod_auth_external

关于perl - 仅显示用户可以使用 gitweb 访问的 GIT 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com