繁体   English   中英

Gitosis错误:在先前可访问的存储库上接收“读取访问被拒绝”

[英]Gitosis Error: Receiving 'Read Access Denied' on previously accessible repository

玩家们

我已经使用git和gitosis几个月了,我真的很喜欢这两个。 不幸的是,我在使用gitosis访问我的一个项目时遇到了问题。

设置

我在运行Debian的托管服务器帐户上设置了我的git和gitosis安装。 我还设置了四台带有单独rsa密钥的计算机(两台Ubuntu,两台Windows),并成功设置每台计算机以访问gitosis安装。 一切都顺利进行了一段时间。 但是,最近,我无法以任何方式访问我的“DesktopConfiguration”项目(推,拉,克隆)。 我最初在我的一台Linux机器上创建了DesktopConfiguration项目,将其推送到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  

故事

根据我在gitosis的经验以及我在网上找到的大多数问题和答案,错误消息看起来与尝试推送到gitosis时收到的错误消息完全没有先将项目添加到您的机器可以访问的组中。 不幸的是,在我的情况下,这似乎并不正确。 (除非我遗漏了什么!)

电线

我不确定这是否会提供更多信息,但这里是我的更新后挂钩的调试消息:

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.  

关闭

我仍然能够在我的所有机器上访问(推送,拉取,克隆)服务器上的所有其他项目(在gitosis-admin和main-projects组中)。 以下是我到目前为止尝试过的一些事情:

  • 我已多次检查所有文件夹,文件和配置设置的拼写。
  • 在确保更新后的挂钩具有正确的执行权限后,我已从gitosis.conf文件中删除并重新添加了DesktopConfiguration项目。
  • 我在DesktopConfiguration之后向gitosis添加了另一个项目,它运行正常。
  • 我已经在本地机器上的git中删除并重新添加了对项目的远程引用。
  • 我已经从服务器上的'repositories'文件夹中删除了DesktopConfiguration.git项目,并试图再次推送它。
  • 我甚至重新创建了所有的rsa密钥(虽然身份验证似乎与我所看到的问题无关)。

所有这些尝试都未能允许我访问该项目。 据我所知,在我失去对该项目的访问权限时,服务器或我的桌面计算机上没有任何变化。

我欢迎你张开双臂的任何见解!

对于“读取访问被拒绝”,我将检查服务器上的gitosis用户是否仍具有对存储库的完全访问权限。 你说你确定服务器上没有任何改变,但你已经排除了很多其他的东西。 双重检查不会有害。

在评论回复中似乎有正确的意思。 我遇到了同样的问题,并且(在一些嚎叫和咬牙切齿之后)最终通过将所有存储库放在一个“可写”线上来解决问题。

在检查源时,可以看到gitosis使用ConfigParser,它需要在一行上显示选项,或者如果在下一行的开头留出空格,则可以断开该行。 从而:

writable = WallpaperChanger RegexTester MovieAggregator FileRenamer

要么

writable = WallpaperChanger RegexTester
           MovieAggregator FileRenamer

我有类似的问题,问题很简单:

我错误地使用相同的公钥创建了2个不同的密钥文件 ,结果是服务器将我识别为这个新用户(没有对某个仓库的权限)而不是我自己(具有对此仓库的读/写访问权限)。

这让我摸不着头脑,所以我想我会分享。

我已经看到有一条线如

writable =

可以破坏对所有存储库的访问。 之所以发生这种情况,是因为我们的gitosis.conf是自动生成的,它进入了一个组没有存储库的场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM