0

如果我通过 hg-ssh 授予访问权限,任何人都知道如何限制用户推送到 hg 存储库?

一些有助于消除显而易见的细节:

1) 这是一种共享主机情况,我没有安装 mercurial-server 的 root 访问权限,也无法创建它需要的“hg”用户名。

2) 当我允许用户通过 SSH 连接到共享主机站点时,他们基本上将在我的 authorized_keys 文件中拥有他们的公钥,并且他们将作为我进行身份验证(即他们将在服务器上拥有我的凭据)。我可以通过在我的 authorized_keys 文件中指定“command =”子句来限制他们仅访问几个 hg 存储库,如下所述:https ://www.mercurial-scm.org/repo/hg-stable/raw-file/tip /contrib/hg-ssh。但是,这使用户可以完全访问这些存储库。我可以将其限制为仅拉取访问吗?

这些都可以解决我的问题:

1)我知道 mercurial-server 以某种方式解决了这个问题,因为他们的所有用户共享同一个名为“hg”的用户帐户。他们是怎么做到的呢?我可以在没有 root 访问权限的情况下做同样的事情吗?

或 2) 是否有可以添加到 hg-ssh 的补丁,以便 hg-ssh 可以在其命令行上获取一些权限。类似“hg-ssh -read-only repo1 repo2 -read-write repo3”的东西。

或 3) 获取“hg -R {repo} serve --stdio”以获取命令行选项,使其不允许推送。

4

3 回答 3

2

快速而肮脏的方法是将command=值调整为如下所示:

command=hg-ssh --config hooks.pretxnchangegroup=false repo1 repo2

但这只是草率地完成了 AclExtension。

于 2011-02-22T19:39:26.843 回答
1

mercurial-server 为您提供了最简单的控制。您可以以非 root 用户身份安装它,但您必须花一点时间来了解它是如何工作的。

于 2011-05-04T13:11:35.257 回答
0

使用AclExtension。它允许您阻止对 ssh 操作和 http 操作的访问,并且由于它是通过钩子启用/禁用的,因此您可以在交互式登录时绕过它。

于 2011-02-22T19:37:21.353 回答