Назад | Перейти на главную страницу

Демон GIt и контроль доступа для множественных репозиториев

Вот ситуация, у меня есть папка с именем git, которая содержит различные репозитории --bare git. Это на моем сервере CentOS 5. Мой персональный компьютер дома - Windows XP.

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

Я запустил демон на своем сервере, набрав:

git daemon --verbose --base-path=/path/to/git/parent/folder --export-all

Затем я использую TortoiseGit для нажатия на адрес: git: //myserver.com/project и получаю это от демона:

Подключение от XX.XX.XX.XX Extended
атрибуты (22 байта) существуют
Запрос
получить пакет для '/ project'
'receive-pack': услуга не включена
для '/ путь / к / git / parent / project'
[XXXX] отключен (с ошибкой)

Я использовал --enable = receive-pack и успешно отправил свой локальный репозиторий на сервер, но результат оказался не тем, что я хотел: а именно, чтобы войти в систему как пользователь. Receive-pack позволяет всем анонимно отправлять сообщения на сервер.

Я искал несколько часов, но не могу найти, как настраивать учетные записи независимо для каждого репозитория. Я читал различные статьи, в которых что-то говорилось о SSH, но я не уверен, что я хочу этого. Насколько мне известно, SSH предназначен для безопасного подключения к моему серверу путем входа в учетную запись linux на сервере (т.е. root, userA и т. Д.). И это не то, что я хочу.

Возьмем, к примеру, SVN: с помощью Subversion вы можете создать файл .htpasswd с учетными записями, которые вам нужны, только для этого конкретного репозитория. Есть ли аналогичный способ с Git?

Спасибо.

Проверять, выписываться гитоз который является приложением для размещения репозитория git. Цитата из описания пакета Debian для gitosis:

This package aims to make hosting git repositories easier and safer.
It manages multiple repositories under one user account, using SSH
keys to identify users. End users do not need shell accounts on the
server; they will talk to one shared account that will not let them
run arbitrary commands.

Вы можете найти источник гитоза на http://eagain.net/gitweb/?p=gitosis.git

Документация по настройке: http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

Очень доволен gitosis, мы его используем в проекте grml (http://grml.org/) с более чем 100 репозиториями, и он отлично работает без каких-либо проблем.

Вы можете попробовать использовать 'git + ssh //'ури вместо'git //'. Это позволит вам работать без сервера (с помощью git) и предоставить разным пользователям права доступа к каждому репозиторию. Как только вы это сделаете, вы можете использовать

git+ssh://user@remotehost/repos/path/project.git

в качестве удаленного местоположения git.

Чтобы инициализировать пустой репозиторий, в который вы можете отправлять данные, используйте 'git --bare init'на удаленном хосте.

Еще одна вещь, которую вы можете рассмотреть, в зависимости от того, что именно вы делаете, - это Github. Он работает очень хорошо, дешев, прост в обслуживании и имеет некоторые тонкости, такие как суть, встроенное отслеживание проблем и т. Д. Мне он очень нравится для личных проектов, а добавление отдельных репозиториев не требует больших затрат.

Иногда не стоит делать это самому.