Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial “限制”;hg push“;通过hg ssh进行共享托管_Mercurial_Ssh_Push_Restrict_Mercurial Server - Fatal编程技术网

Mercurial “限制”;hg push“;通过hg ssh进行共享托管

Mercurial “限制”;hg push“;通过hg ssh进行共享托管,mercurial,ssh,push,restrict,mercurial-server,Mercurial,Ssh,Push,Restrict,Mercurial Server,如果我通过hg ssh提供访问权限,有人知道如何限制用户推送到hg存储库吗 一些有助于消除明显问题的细节: 1) 这是一个适用于共享主机的情况,在这种情况下,我没有安装mercurial server的root访问权限,也无法创建它所需的“hg”用户名 2) 当我允许用户通过SSH连接到共享托管站点时,他们基本上会在我的授权密钥文件中拥有他们的公钥,并且他们将作为我进行身份验证(即,他们将在服务器上拥有我的凭据)。我可以通过在我的authorized_keys文件中指定一个“command=”子

如果我通过hg ssh提供访问权限,有人知道如何限制用户推送到hg存储库吗

一些有助于消除明显问题的细节:

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

2) 当我允许用户通过SSH连接到共享托管站点时,他们基本上会在我的授权密钥文件中拥有他们的公钥,并且他们将作为我进行身份验证(即,他们将在服务器上拥有我的凭据)。我可以通过在我的authorized_keys文件中指定一个“command=”子句来限制他们对几个hg存储库的访问,如下所述:。但是,这允许用户完全访问这些存储库。我可以将此限制为仅拉入访问吗

以上任何一项都可以解决我的问题:

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”接受一个命令行选项,这样它就不允许推送

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

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

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

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

但这只是AclExtension做得太草率了。

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

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

但这只是AclExtension做得太草率了。

mercurial服务器为您提供了最简单的控制。您可以以非root用户的身份安装它,但您需要花更长的时间来了解它的工作原理。

mercurial server为您提供了最简单的控制。您可以以非root用户的身份安装它,但您必须花更长的时间来理解它的工作原理。

(请忽略上面的注释;只是习惯于按enter键发布注释)。Ry4an,在看过AclExtension之后,我对它应该如何工作感到困惑。AclExtension中指定的用户名是Unix用户名,不是吗?如果是这样,当我将其他人的公钥添加到我的授权密钥时,他们将显示为我,即使用我的用户名。我不想限制自己,只想通过一些公钥进入连接。它确实使用用户名,但如果您以交互方式登录,您可以通过从命令行取消钩子来轻松绕过AclExtension(请忽略上面的注释;只是习惯于按enter键发布注释)。Ry4an,在看过AclExtension之后,我对它应该如何工作感到困惑。AclExtension中指定的用户名是Unix用户名,不是吗?如果是这样,当我将其他人的公钥添加到我的授权密钥时,他们将显示为我,即使用我的用户名。我不想限制自己,只想通过一些公钥进入连接。它确实使用用户名,但如果您以交互方式登录,您可以通过从命令行取消挂钩轻松绕过AclExtension。我刚刚尝试了这个,似乎能够推动。您确定hg ssh使用--config标志吗?我正在看这里的代码,我看不到它的条款。也许我遗漏了一些明显的东西?如果hg ssh没有保留命令行选项,那么将该选项放在hg ssh脚本本身中。只要找到它调用hg的地方并添加到那里就行了。谢谢Ryan。尽管这并没有让我完全按照自己的意愿去做,但它让我对hg钩子有了足够的理解,从而可以完成我所需要的,并编写自己的hg-ssh脚本。您确定hg ssh使用--config标志吗?我正在看这里的代码,我看不到它的条款。也许我遗漏了一些明显的东西?如果hg ssh没有保留命令行选项,那么将该选项放在hg ssh脚本本身中。只要找到它调用hg的地方并添加到那里就行了。谢谢Ryan。尽管这并没有让我完全按照我的意愿去做,但它让我对hg钩子有了足够的了解,从而可以完成我所需要的并编写我自己的类似hg ssh的脚本。你能为你的用户设置对这个存储库的https(SSL)访问而不是ssh吗?你能设置https(SSL)吗您的用户可以访问此存储库而不是ssh?我不知道mercurial server可以在没有root访问权限的情况下安装—特别是我认为它需要一个专用的“hg”用户帐户。您是否有指向安装说明页面的链接?我必须说,我写了自己的hg网关工具来实现这一点:我认为不使用专用帐户来完成这样的工作是个坏主意,特别是因为mercurial server必须删除并重写您的授权密钥文件。不过,该账户不必称为“hg”。您需要配置的关键文件是专用帐户主目录中的.mercurial server文件。我不知道可以在没有root访问权限的情况下安装mercurial server,特别是我认为它需要一个专用的“hg”用户帐户。您是否有指向安装说明页面的链接?我必须说,我写了自己的hg网关工具来实现这一点:我认为不使用专用帐户来完成这样的工作是个坏主意,特别是因为mercurial server必须删除并重写您的授权密钥文件。这个帐户不存在