Предоставить доступ только для чтения к хранилищу git - PullRequest
5 голосов
/ 11 октября 2010

Я не уверен, должно ли это идти здесь или на суперпользователе (как это, кажется, относится к обеим темам), поэтому я поставил это здесь, если это не подходит, я пойду и спрошу это на суперпользователе.

В любом случае, у меня есть git-репозиторий, который не может быть полностью открытым исходным кодом (в противном случае я просто поместил бы его на github и покончил с этим), и у меня есть сервер, к которому у меня есть доступ по ssh (но недоступ суперпользователя), на этом сервере уже есть все git-файлы.Мне нужно дать кому-то доступ только для чтения к этому git-repo (или, по крайней мере, доступ только для чтения к некоторым веткам, хотя я бы подумал, что это намного сложнее).

В настоящее время я использую sshнажать и опросить мое локальное git-репо на этот сервер.Есть ли способ дать другому человеку доступ только для чтения к серверу?(Полагаю, у меня все в порядке, когда у нас обоих есть доступ на запись в репозиторий, хотя я не уверен, как это сделать с разрешениями Unix, поскольку у меня нет возможности создавать новые группы Unix, поскольку у меня нет суперпользователяразрешения).

Спасибо за вашу помощь.

Ответы [ 5 ]

3 голосов
/ 11 октября 2010

Вы хотите использовать протокол git. http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html

Это будет публично для всех, что может быть не так, как вы хотите, но никто не сможет сделать толчок через git: //.

Вы можете контролировать, к каким ветвям они могут получить доступ, только нажав на ветки, к которым вы хотите быть доступными.
Я хотел бы сделать это, имея отдельный клон из вашего частного репозитория с поддержкой ssh, а затем добавить его в качестве удаленного. Тогда вы можете сделать git push pub public-branch, поэтому private-branch не будет доступно из этого места.

1 голос
/ 13 октября 2010

Вы можете использовать один из инструментов для управления репозиториями git , таких как gitosis (в Python) или gitolite (в Perl), которые позволяют контролировать доступ крепозитории (или вы можете использовать свое собственное решение, подобное примеру update-paranoid update hook).

Другим решением будет использование одного из сайтов хостинга git которые предлагают частные репозитории (например, Codaset предоставляет 1 (полу) частный репозиторий в бесплатном плане с ограничением дискового пространства 200 МБ).

1 голос
/ 12 октября 2010

Вы можете настроить ACL для управления правами в своих репозиториях ... Об этой теме есть много подробностей в Pro Git book . И согласно тому, что я прочитал до сих пор, да, вы можете применить это к избранным веткам, если хотите.

1 голос
/ 11 октября 2010

В .ssh / authorized_keys вы можете указать команду, которая всегда запускается, когда для входа в систему используется заданный открытый ключ. Вероятно, вы можете установить это значение на git-upload-pack /path/to/repo.git, и git pull может просто сработать.При таком подходе вполне могут быть неочевидные ловушки безопасности.

См. страницу справочника sshd , чтобы узнать формат файла authorized_keys.

0 голосов
/ 11 октября 2010

Вы можете иметь частные репозитории на Github ... они просто стоят несколько долларов в месяц в зависимости от количества разработчиков.Вы можете легко контролировать доступ оттуда.

...