Ограничение "hg push" через hg-ssh для общего хостинга - PullRequest
0 голосов
/ 22 февраля 2011

Кто-нибудь знает, как я могу ограничить пользователей от отправки в репозиторий hg, если я дам тогда доступ через hg-ssh?

Некоторые детали, помогающие устранить очевидное:

1) Это для ситуации с общим хостингом, когда у меня нет root-доступа для установки mercurial-сервера, и я не могу создать имя пользователя "hg", которое ему требуется.

2) Когда я разрешаю пользователю подключаться через SSH к общему хостинговому сайту, у него в основном будет свой открытый ключ в моем файле author_keys, и они будут аутентифицироваться как я (т.е. у них будут мои учетные данные на сервере) , Я могу ограничить их доступ только к нескольким репозиториям hg, указав в моем файле author_keys условие «command =», как описано здесь: https://www.mercurial -scm.org / repo / hg-stable / raw-file / tip / вно / HG-SSH . Однако это дает пользователю полный доступ к этим репозиториям. Могу ли я ограничить это только доступом по запросу?

Любое из них решит мою проблему:

1) Я знаю, что mercurial-сервер решает эту проблему каким-то образом, потому что все пользователи имеют общую учетную запись, называемую «hg». Как они это делают? Могу ли я сделать то же самое без рут-доступа для настройки?

ИЛИ 2) Есть ли патч, который я могу добавить к hg-ssh, чтобы hg-ssh мог получить некоторые разрешения в своей командной строке. Что-то вроде "hg-ssh -read-only repo1 repo2 -read-write repo3".

ИЛИ 3) Получить "hg -R {repo} serve --stdio", чтобы выбрать параметр командной строки, чтобы он не позволял push.

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011

Быстрый и грязный способ - настроить значение command= на что-то вроде этого:

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

но AclExtension просто небрежно.

1 голос
/ 04 мая 2011

Mercurial-сервер дает вам простейший контроль над этим.Вы можете установить его как пользователь без полномочий root, но вам нужно немного больше времени, чтобы понять, как он работает.

0 голосов
/ 22 февраля 2011

Используйте AclExtension .Он позволяет блокировать доступ для действий ssh, а также действий http, и, поскольку он включен / отключен с помощью хуков, вы сможете обойти его, когда войдете в систему в интерактивном режиме.

...