我目前正在尝试搭建一个GIT仓库服务器,以便我们可以从SVN切换到GIT。 我已经几乎覆盖了所有内容,但还剩下一个问题。
当前设置如下:
- 所有开发人员(和非开发人员)都有用户帐户和正确的组,因为服务器是NIS客户端。 - 所有存储库都在 /var/git/ 中创建。 - 所有拉取/推送都通过ssh完成。
到目前为止,这个设置运行得非常完美,并且消除了gitosis或gitolite的需要。
因为我想要查看我设置的存储库的可浏览概述,所以我设置了包括pathinfo的gitweb。 由于存储库是私有的,所以我通过Perl AuthenNIS设置了身份验证,这起作用了,但是我遇到了一个问题。
不希望所有开发人员都能访问所有存储库,但是gitweb显示了它(apache用户)可以读取的每个存储库。
因此,我的问题是:是否可以使gitweb仅显示当前登录用户有权限访问的GIT存储库? 可能的解决方案::
当前设置如下:
- 所有开发人员(和非开发人员)都有用户帐户和正确的组,因为服务器是NIS客户端。 - 所有存储库都在 /var/git/ 中创建。 - 所有拉取/推送都通过ssh完成。
到目前为止,这个设置运行得非常完美,并且消除了gitosis或gitolite的需要。
因为我想要查看我设置的存储库的可浏览概述,所以我设置了包括pathinfo的gitweb。 由于存储库是私有的,所以我通过Perl AuthenNIS设置了身份验证,这起作用了,但是我遇到了一个问题。
不希望所有开发人员都能访问所有存储库,但是gitweb显示了它(apache用户)可以读取的每个存储库。
因此,我的问题是:是否可以使gitweb仅显示当前登录用户有权限访问的GIT存储库? 可能的解决方案::
- 可以通过 .htaccess 进一步控制访问。路径信息可以实现这一点,但它不能防止使用非路径信息 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 工作或有其他解决方案?
sudo
以及进行哪些操作。查看man sudoers
。 - ErikR