阻止访问webserver中的某些文件 - mercurial / ssh

时间:2012-04-16 08:42:23

标签: mercurial ssh mercurial-server

我有一个使用mercurial repo维护代码的centos服务器。 为了让新人能够将代码提交给mercurial,我创建了一个新用户,将他们添加到webdev组,他们可以通过

推送/拉取代码
hg pull ssh://name@server.com. 

但是,有些文件(配置文件)我不希望新用户有权访问。 Mercurial被要求不跟踪这些文件,因此访问它们的唯一方法是ssh进入系统并查看文件。我不希望新用户能够这样做。

本质上,我希望我的新开发人员只能通过hg拉/推文件,并且不允许ssh-ing直接进入系统。最好的方法是什么?我是否可以在不提供对文件的ssh访问权限的情况下提供对repo的hg访问?

(或者我解决问题的方法有缺陷吗?)

谢谢!

2 个答案:

答案 0 :(得分:2)

根据授权层(类似于Gitolite for Git),您有 mercurial-server (不要与Mercurial light-weight web server hgserve混淆)

  

mercurial-server为您的开发人员提供使用SSH公钥认证对集中式Mercurial存储库的远程读/写访问权限;它提供方便和细粒度的密钥管理和访问控制。

repository here

它基于与SSH forced-command mechanismRy4an提到的脚本相同的his answer(答案为+1,因为它已与Mercurial打包在一起)。
有关refreshauth.py的“mercurial-server”来源,请参阅插图。

答案 1 :(得分:2)

利用command文件中提供的.ssh\authorized_keys选项,可以轻松完成此操作。当您在该文件中授予其密钥访问权限时,可以在其密钥前加上“command = ....”参数,这是他们可以运行的唯一命令。

Mercurial附带了一个方便的脚本来完成这个任务。它有内部说明:

https://www.mercurial-scm.org/repo/hg/file/tip/contrib/hg-ssh