Ошибка Gitosis: получение «Доступ запрещен на чтение» в ранее доступном хранилище - PullRequest
12 голосов
/ 08 августа 2010

Игроки

Я использую мерзавец и гитоз уже несколько месяцев, и я действительно люблю оба. К сожалению, я столкнулся с проблемой доступа к одному из моих проектов с помощью gitosis.

Настройка

Я установил свои установки git и gitosis на учетную запись размещенного сервера под управлением Debian. Я также настроил четыре компьютера (два Ubuntu, два Windows) с отдельными ключами rsa и успешно настроил каждый для доступа к установке gitosis. Все работало плавно в течение некоторого времени. Однако в последнее время я не смог получить доступ к своему проекту DesktopConfiguration каким-либо образом (push, pull, clone). Первоначально я создал проект DesktopConfiguration на одном из моих компьютеров с Linux, перенес его на сервер gitosis и клонировал на одном из моих компьютеров с Windows. У меня не было проблем с доступом к нему до недавнего времени (последние две недели или около того). Ниже приведен мой файл gitosis.conf и сообщение об ошибке, которое я получаю (сообщения об ошибках одинаковы, независимо от того, пытаюсь ли я нажать, вытащить или клонировать с помощью своих окон Windows или Linux):

Крюк

gitosis.conf

[gitosis]  
loglevel = DEBUG  

[group gitosis-admin]  
writable = gitosis-admin  
members = windows-desktop linux-desktop linux-laptop work-laptop  

[group main-projects]  
writable = WallpaperChanger  
writable = RegexTester  
writable = MovieAggregator  
writable = FileRenamer  
writable = GlutenFreeShoppingAssistant  
writable = Libraries  
writable = DesktopConfiguration  
writable = RssFeedReader  
members = windows-desktop linux-desktop linux-laptop work-laptop  

Сообщение об ошибке

C:\Documents and Settings\myname\Desktop\Desktop Config Test>git clone git@myserver:DesktopConfiguration.git  
Initialized empty Git repository in C:/Documents and Settings/myname/Desktop/Desktop Config Test/DesktopConfiguration/.git/  
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'DesktopConfiguration.git'"  
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as 'writable' on 'DesktopConfiguration.git'...  
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'DesktopConfiguration.git', new value 'DesktopConfiguration'  
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'main-projects'  
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'gitosis-admin'  
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as 'writeable' on 'DesktopConfiguration.git'...  
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'DesktopConfiguration.git', new value 'DesktopConfiguration'  
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'main-projects'  
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'gitosis-admin'  
DEBUG:gitosis.access.haveAccess:Access check for 'work-laptop' as 'readonly' on 'DesktopConfiguration.git'...  
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'DesktopConfiguration.git', new value 'DesktopConfiguration'  
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'main-projects'  
DEBUG:gitosis.group.getMembership:found 'work-laptop' in 'gitosis-admin'  
ERROR:gitosis.serve.main:Repository read access denied  
fatal: The remote end hung up unexpectedly  

Сказка

Исходя из моего опыта работы с гитозами и большинства вопросов и ответов, которые я нашел в Интернете, сообщения об ошибках выглядят точно так же, как и сообщения, полученные при попытке перейти на гитоз без предварительного добавления проекта в группу, в которой находится ваша машина. имеет доступ к. К сожалению, в моем случае это не так. (Если я что-то упустил!)

Проволока

Я не совсем уверен, предоставит ли это дополнительную информацию, но вот отладочные сообщения из моего хука после обновления:

INFO:gitosis.run_hook:Running hook post-update  
DEBUG:gitosis.gitdaemon:Global default is 'deny'  
DEBUG:gitosis.gitdaemon:Walking '.', seeing ['RegexTester.git', 'gitosis-admin.git', 'Libraries.git', 'GlutenFreeShoppingAssistant.git', 'MovieAggregator.git', 'DesktopConfiguration.git', 'WallpaperChanger.git', 'RssFeedReader.git', 'FileRenamer.git']  
DEBUG:gitosis.gitdaemon:Deny 'RegexTester'  
DEBUG:gitosis.gitdaemon:Deny 'gitosis-admin'  
DEBUG:gitosis.gitdaemon:Deny 'Libraries'  
DEBUG:gitosis.gitdaemon:Deny 'GlutenFreeShoppingAssistant'  
DEBUG:gitosis.gitdaemon:Deny 'MovieAggregator'  
DEBUG:gitosis.gitdaemon:Deny 'DesktopConfiguration'  
DEBUG:gitosis.gitdaemon:Deny 'WallpaperChanger'  
DEBUG:gitosis.gitdaemon:Deny 'RssFeedReader'  
DEBUG:gitosis.gitdaemon:Deny 'FileRenamer'  
INFO:gitosis.run_hook:Done.  

Отключение

Я все еще могу получить доступ (push, pull, clone) ко всем другим проектам на сервере (в группах gitosis-admin и main-projects) на всех моих машинах. Вот несколько вещей, которые я пытался сделать до сих пор:

  • Я несколько раз проверил написание всех папок, файлов и настроек конфигурации.
  • Я удалил и повторно добавил проект DesktopConfiguration из файла gitosis.conf, убедившись, что хук после обновления имел надлежащие разрешения на выполнение.
  • Я добавил еще один проект в gitosis после DesktopConfiguration, и он работает правильно.
  • Я удалил и заново добавил мои удаленные ссылки на проект в git на моих локальных машинах.
  • Я удалил проект DesktopConfiguration.git из папки «Репозитории» на сервере и попытался снова зайти на него.
  • Я даже заново создал все свои ключи rsa (хотя аутентификация, похоже, не имеет ничего общего с проблемами, с которыми я сталкиваюсь).

Все эти попытки не позволили мне получить доступ к проекту. Насколько мне известно, ничего не изменилось на сервере или моих настольных компьютерах за время, когда я потерял доступ к этому проекту.

Жало

Я приветствую любые идеи, которые вы можете получить с распростертыми объятиями!

Ответы [ 4 ]

4 голосов
/ 12 августа 2010

Для «доступ на чтение запрещен» я бы проверял, что пользователь gitosis на сервере все еще имеет полный доступ к репозиториям. Вы говорите, что уверены, что на сервере ничего не изменилось, но вы исключили много других вещей. Не помешает перепроверить.

3 голосов
/ 17 декабря 2010

Похоже, подпись получила правильный ответ в комментарии. У меня возникла та же проблема, и (после некоторого вопля и скрежета зубов) я, наконец, решил эту проблему, поместив все репозитории в одну «доступную для записи» строку.

После проверки источника вы заметили, что в gitosis используется ConfigParser, который требует, чтобы опции отображались в одной строке, или вы можете разбить строку, если оставите пробел в начале следующей строки. Таким образом:

writable = WallpaperChanger RegexTester MovieAggregator FileRenamer

или

writable = WallpaperChanger RegexTester
           MovieAggregator FileRenamer
1 голос
/ 18 февраля 2013

У меня была похожая проблема, и проблема была довольно простой:

Я по ошибке создал 2 разных файла ключей с тем же открытым ключом , в результате чегосервер признал меня новым пользователем (без прав на определенное хранилище) вместо меня (с доступом на чтение / запись к этому хранилищу).

Это заставило меня почесать голову, и я решил поделиться.

0 голосов
/ 01 августа 2011

Я видел, что с такой строкой, как

writable =

может нарушить доступ ко всем репозиториям. Это произошло потому, что наш gitosis.conf генерируется автоматически, и он добрался до сценария, когда у группы не было репозиториев.

...