如何使用 apache 和 hgweb 配置 mercurial 访问控制?

如何使用 apache 和 hgweb 配置 mercurial 访问控制?

我已经建立了一个 mercurial repo,以便在 OS X 上使用 apache+wsgi+hgweb 提供服务。

现在,它对任何在正确的端口号上偶然发现我的服务器的人都完全开放。

我该如何设置,以便只有拥有我认可的用户名+密码对的人才能从 repo 中提取和/或推送?

我知道如何使用 ssh 非常轻松地实现这一点,但在这种特定情况下,要求是解决方案不需要为我想授予 repo 访问权限的每个人在机器上定义完整的用户帐户。

答案1

假设您已经有了 VirtualHost 并且在它之下有放置您的 的目录hgweb.wsgi,您需要在该目录下添加以下内容:

AuthType Basic
AuthName "Mercurial Repositories Restricted Access"
AuthUserFile /path/to/hg_passwords_file
Require valid-user

接下来您应该使用该htpasswd工具来创建hg_passwords_file类似如下的内容:

htpasswd -c hg_passwords_file username

对于第一个用户(并根据要求输入密码)。

对于其他用户,请省略-c将其添加到文件中,而不是重新创建文件。

答案2

Apache 身份验证配置示例在“添加身份验证”部分“发布 Mercurial 存储库”文档。其中提供了两种常见情况的示例(限制所有访问或仅限制推送操作),甚至还提供了htpasswdhtdigest工具(用于维护密码文件)的使用示例。

使用 WSGI 而不是普通 CGI(或任何其他方法)不会影响这部分设置——只需在语句中指定用户可见的 URL 路径<Location url-path>

相关内容