dte*_*ech 5 git authentication perl gitweb
我目前正在尝试设置GIT存储库服务器,以便我们可以从SVN切换到GIT.我几乎覆盖了所有东西,但我留下了一个问题.
目前的设置如下:
到目前为止,这完美地起作用,并且消除了对gitosis或gitolite的需要.
因为我希望对存储库有一个可浏览的概述,所以我设置了gitweb,包括pathinfo.因为repos是私有的,我通过Perl AuthenNIS设置了身份验证,这样可行,但是在这里我遇到了一个问题.
不希望所有开发人员都可以访问所有存储库,但是gitweb只显示它(apache用户)可以读取的每个存储库.
所以我的问题是:是否有可能让gitweb只显示当前登录用户有权访问的GIT repo?
可能的方法:
$export_auth_hook
结合$cgi->remote_user
似乎很有希望,但我对perl的理解太有限了,无法使用它(钩子需要验证用户是否有权在显示/导出之前访问repo目录)有谁知道如何做3或4个工作或有另一个解决方案?
如果开发人员在(我认为)他们自己的用户名下使用 ssh 从存储库服务器推送/拉取,那么完成此操作的最简单方法可能是找到一种在该用户身份下运行gitweb
或运行的方法。git
例如,找到一种在gitweb
执行之前添加身份验证挂钩的方法。然后添加一个包装器gitweb
来执行sudo -u $user gitweb.real
经过$user
身份验证的用户名。
或者,您可以只包装git
命令,即gitweb
执行一个执行sudo -u $user {real-git-path}
.
要在 Apache 中实现针对 NIS/PAM 的身份验证,请查看mod_auth_external