2012-04-16 84 views
0

我有一个使用mercurial repo维护代码的centos服务器。 允许新的人提交代码到善变的,我创建了一个新的用户,将它们添加到Webdev的群体,他们可以通过防止访问Web服务器中的某些文件 - mercurial/ssh

hg pull ssh://[email protected] 

推/拉码不过,也有一些文件(配置文件)我不希望新用户有权访问。已经要求Mercurial不要跟踪这些文件,因此访问它们的唯一方法就是进入系统并查看文件。我不希望新用户能够做到这一点。

实质上,我希望我的新开发人员仅通过hg拖放/推送文件并禁止直接将ssh-ing导入系统。什么是最好的方法来做到这一点?我可以在没有提供对文件的ssh访问的情况下提供hg访问回购协议吗?

(或者我的方法有问题?

谢谢!

回答

2

这可以通过利用.ssh\authorized_keys文件中的command选项来实现。当你授予他们在该文件中的密钥访问权限时,你可以在它们的密钥中加上“command = ....”参数,这是他们唯一可以运行的命令。

Mercurial附带一个方便的脚本来完成这件事。它有里面的说明:

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

+0

这就是我正在寻找!谢谢! – crazyphoton 2012-04-17 02:36:19

+0

Mercurial-server基于完全相同的方法,但为您完成许多手工完成的工作,例如编辑authorized_keys文件。我有偏见,因为我是作者,但是我绝对推荐在大多数情况下使用mercurial-server而不是hg-ssh。 – 2012-04-17 11:03:54

+0

虽然我(确实)偏向于mercurial服务器,这是因为数百名在Ubuntu上安装它的新手,因为它令人迷惑的名字期望获得hgweb.cgi的http://服务,并且因为我认为它增加了复杂性w/o很多值。它在hg-ssh/hgweb和Rhodecode之类的东西之间占据了一个中间地带,增加了复杂性,而不会增加太多的功能。显然,这只是一个人的意见。 – 2012-04-17 13:26:12

2

在授权层(类似于Gitolite for Git),你有mercurial-server(不要与Mercurial light-weight web server hgserve混淆)的长期

mercurial-server给你的开发人员远程读取到集中式的Mercurial库/写访问使用SSH公钥认证;它提供了方便和细致的密钥管理和访问控制。

查看其repository here

它是基于相同的SSH forced-command mechanismRy4anhis answer提到的脚本(在他的回答+1,因为它已经与水银包装)。
请参阅refreshauth.py的“mercurial-server”源代码。