我目前正在尝试设置GIT存储库服务器,以便我们可以从SVN切换到GIT。我几乎涵盖了所有内容,但还有一个问题。
当前设置如下:
到目前为止,它可以完美地工作,并且消除了对筒状变形或硅藻土的需求。
因为我想对存储库有一个可浏览的概述,所以我设置了gitweb(包括pathinfo)。因为该 repo 协议(protocol)是私有(private)的,所以我已经通过Perl AuthenNIS设置了身份验证,并且可以正常工作,但是在这里我遇到了问题。
不希望所有开发人员都可以访问所有存储库,但是gitweb仅显示它(apache用户)可以读取的每个存储库。
所以我的问题是:是否可以使gitweb仅显示当前登录用户有权访问的GIT存储库?
可能的解决方案:
$export_auth_hook
与$cgi->remote_user
结合使用似乎很有希望,但是我对perl的理解太有限,无法使用它(该钩子(Hook)需要在显示/导出它之前验证用户是否有权访问repo目录)有谁知道如何使3个或4个工作或有其他解决方案?
最佳答案
如果开发人员正在(我假设)他们自己的用户名下使用ssh从存储服务器中推送/pull 出,那么完成此操作的最简单方法可能是找到一种在该用户身份下运行gitweb
或git
的方法。
例如,找到一种在执行gitweb
之前添加身份验证 Hook 的方法。然后,在gitweb
周围添加一个包装程序,以执行sudo -u $user gitweb.real
,其中$user
是已认证的用户名。
或者,您可以只包装git
命令,即让gitweb
执行一个执行sudo -u $user {real-git-path}
的包装器。
要在Apache中实现针对NIS/PAM的身份验证,请查看mod_auth_external