2012-04-16 4 views
0

У меня есть сервер centos с кодом, поддерживаемым с использованием меркуриального репо. Чтобы разрешить новому человеку совершить код Mercurial, создать нового пользователя, добавьте их в группу Webdev, и они могут толкать/тянуть код наПредотвращение доступа к некоторым файлам на веб-сервере - mercurial/ssh

hg pull ssh://[email protected] 

Однако, есть некоторые файлы (файлы конфигурации) что я бы не хотел, чтобы новые пользователи имели доступ. Mercurial попросили не отслеживать эти файлы, поэтому единственный способ получить к ним доступ - это ssh в систему и посмотреть файлы. Который я не хочу, чтобы новые пользователи могли это сделать.

В сущности, я хочу, чтобы мои новые разработчики только тянули/толкали файлы через hg и запрещали ssh-ing непосредственно в систему. Какой лучший способ сделать это? Могу ли я предоставить hg доступ к репо без предоставления доступа к файлам ssh?

(или мой подход к проблеме испорчен?)

Спасибо!

ответ

2

Это действительно легко сделать, воспользовавшись опцией command, доступной в .ssh\authorized_keys файлах. Когда вы предоставляете свой ключевой доступ в этом файле, вы можете добавить аргумент «command = ....» к своему ключу, и это единственная команда, которую они могут запустить.

Mercurial корабли с удобным сценарием для выполнения именно этого. Она содержит инструкции внутри:

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

+0

то точно, что я искал! Благодаря! – crazyphoton

+0

Mercurial-server основан на точно таком же подходе, но делает для вас большую часть работы, которую вы будете делать вручную, например, редактирование файла authorized_keys. Я предвзятый, потому что я автор, но я определенно рекомендую использовать mercurial-server over hg-ssh для большинства ситуаций. –

+0

Принимая во внимание, что я (по общему признанию) предвзято относился к mercurial-серверу, как из-за сотен новичков, которые установили его на ubuntu из-за его запутанного имени, ожидающего получить http: // hgweb.cgi, и потому, что я думаю, что это добавляет сложности w/o большое значение. Он занимает промежуточное место между hg-ssh/hgweb и чем-то действительно полным, таким как Rhodecode, добавляя сложность, не добавляя многого набора функций. Ясно, что это мнение только одного человека. –

2

В срок слоя авторизации (по аналогии с Gitolite for Git), у вас есть mercurial-server (не путать с Mercurial light-weight web server hgserve)

mercurial-server дает вашим разработчикам удаленный доступ на чтение/запись в централизованных Mercurial хранилищ используя аутентификацию открытого ключа SSH; он обеспечивает удобное и точное управление ключами и контроль доступа.

Посмотреть repository here.

Он основан на том же SSH forced-command mechanism, чем сценарий упомянутой Ry4an в his answer (+1 на свой ответ, так как он уже упакован с Mercurial).
Смотрите на иллюстрации источник «mercurial-server» refreshauth.py.