我已经建立了一个 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 存储库”文档。其中提供了两种常见情况的示例(限制所有访问或仅限制推送操作),甚至还提供了htpasswd
和htdigest
工具(用于维护密码文件)的使用示例。
使用 WSGI 而不是普通 CGI(或任何其他方法)不会影响这部分设置——只需在语句中指定用户可见的 URL 路径<Location url-path>
。