仅显示GIT回复用户可以使用gitweb访问哪些用户

时间:2011-09-03 15:37:37

标签: perl git authentication gitweb

我目前正在尝试设置GIT存储库服务器,以便我们可以从SVN切换到GIT。我几乎覆盖了所有东西,但是留下了一个问题。

目前的设置如下:

  • 所有开发人员(和非开发人员)都拥有一个用户帐户&正确的组,因为服务器是NIS客户端
  • 所有回购均在/ var / git /
  • 中进行
  • 所有拉/推都是通过ssh
  • 完成的

到目前为止,这种方法非常有效,并且无需使用gitosis或gitolite。

因为我希望对存储库有一个可浏览的概述,所以我设置了gitweb,包括pathinfo。因为repos是私有的,所以我通过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的理解太有限了,无法使用它(钩子需要验证用户是否有权在显示之前访问repo目录/出口)
  5. 是否有人知道如何制作3或4个作品或有其他解决方案?

1 个答案:

答案 0 :(得分:2)

如果开发人员使用ssh(我假设)他们自己的用户名从存储库服务器推送/拉出,那么也许最简单的方法就是找到一种方法来运行{{用户身份下的1}}或gitweb

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

或者,你可以包装$user命令,即让git执行一个包含gitweb的包装。

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