Mercurial用户管理和安全性

时间:2011-10-20 11:40:29

标签: security mercurial

我刚在Centos 5.5 x64服​​务器上安装了Mercurial 1.9.3。我正在使用hgweb.wsgimod_wsgi发布我的存储库。

此服务器仅供我们的内部代码库和开发团队使用,因此我还使用.htaccess和基本HTTP身份验证保护我的服务器。这一切都很好,我可以将存储库克隆到本地并将更改推回到中央存储库。

有一件事我不能正确理解,如何控制和管理用户。

例如,我的中央存储库服务器.htpassword文件中有两个用户:bobkevin

在每个bobkevin的本地计算机上,他们都有自己的Mercurial .hgrc文件,并配置了username个设置。

但是,这些.hgrc用户似乎与远程服务器的.htpassword文件中指定的用户完全没有任何关系。

这意味着我最终可能会推送来自“米老鼠”和“唐老鸭”的中央存储库,这是无用的。

如何强制将本地.hgrc用户名的端到端映射到.htpassword用户进行维护,即确保.hgrc中指定的用户与.htpassword匹配用户?

2 个答案:

答案 0 :(得分:6)

这不是一个答案,但值得一提:一开始每个人都担心这个问题,但实际上这不是问题

当用户提交DVCS时,无论是Mercurial,git还是其他,他们都不一定连接到您控制的任何身份验证/授权系统,因此他们的提交必须(无论是本地)提交给任何作者他们想断言的信息。您可以稍后将push上的更改集拒绝到您控制的repo / server,但这对您和他们来说都是一个很大的麻烦。这不仅仅是重新设置他们的名称/密码,他们必须改变该变更集的历史记录以及所有后续变更集以更改作者信息。

完全不满意解决方案的列表是:

  • 拒绝推送变更集作者与使用钩子的经过身份验证的用户不匹配(实际上这很糟糕,因为开发人员互相拉扯并一直推动彼此的变更集)
  • 让开发人员使用gpg扩展或hgsigs签署他们的变更集(一个巨大的麻烦,他们会忘记)
  • 在服务器上保留一个pushlog,记录经过身份验证的用户,该用户将每个变更集与其作者分开(Mozilla这样做,并且不像其他人那样麻烦,但仍然不太可能被咨询)。

如果您肯定无法冒险进入特定仓库的伪造变更集,那么使用人工过滤器,人们推送到共享回购A并且只有审阅者/ buildmanager /您可以从回购A推送到回购B,其中回购B是官方构建来自。 Mercurial本身使用这个系统。

最后我的建议是不要担心。值得招聘的开发人员很自豪地将他们的名字写在他们的承诺上,如果你没有值得雇用的开发人员,那你已经注定要失败了。

答案 1 :(得分:0)

  

如何实施本地.hgrc用户名到.htpassword用户的端到端映射以维护

没有办法做到这一点。但是(相反)ACL扩展+ ssh(hg-ssh或mercurial-server)提供了更可预测的结果

PS

[ui] username =

可用并且在变更集注释上下文中只有 ,就像注释一样,仅此而已