Подтвердить что ты не робот

Ошибка Gitosis: получение "Read Access Denied" в ранее доступном репозитории

Игроки

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

Настройка

Я установил свои установки 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 [email protected]: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  

Сказка

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

Провод

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

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, так и в проектах основных проектов) на всех моих машинах. Вот несколько вещей, которые я пытался сделать до сих пор:

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

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

Стинг

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

4b9b3361

Ответ 1

Для "отказа в доступе к чтению" я бы проверял, что пользователь gitosis на сервере по-прежнему имеет полный доступ к репозиториям. Вы говорите, что уверены, что на сервере ничего не изменилось, но вы управляете множеством других вещей. Это не может повредить двойной проверке.

Ответ 2

Кажется, в ответ на комментарий он понял это правильно. У меня была такая же проблема и (после некоторого вопля и скрежещения зубов), наконец, устранила проблему, поставив все репозитории на одну "записываемую" линию.

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

writable = WallpaperChanger RegexTester MovieAggregator FileRenamer

или

writable = WallpaperChanger RegexTester
           MovieAggregator FileRenamer

Ответ 3

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

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

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

Ответ 4

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

writable =

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