gpt4 book ai didi

apache - 提交访问被拒绝 : 'foobar' MKACTIVITY MYREPO: 时出现 SVN 错误

转载 作者:行者123 更新时间:2023-12-04 01:47:50 25 4
gpt4 key购买 nike

我目前正在使用带有 ActiveDirectory 身份验证的 Apache 和 SVN。用户正在使用 TortoiseSVN 客户端。

我应该指出,我有 2 个具有相同名称和不同映射的存储库,但重定向到相同的“用户 url”,因为两个存储库的权限相同。

例如“http://mysrvr/svn/foo/bar/corge”和“http://mysrvr/svn/foo/corge”

或“http://mysrvr/svn/foo/bar/corge 和”“http://mysrvr/svn/foo/grault/corge”

这 2 个 repos 的东西用 8 个“repo pair”复制,剩下的 7 个工作得很好。

这是我的错误:

Commit failed(details follow):

access to '/svn/myDir/MYREPO/!svn/act/65bf494c-a66a-4f45-870e-d988f691a45d' forbidden

Finished!



这不是权限,因为用户 foobar 具有 rw 访问权限并且他已成功 checkout 存储库。提交时发生此错误。

有助于定位精确解决的事情:
  • 其他 repo 对做得很好。而且权限是一样的。
  • 我的 svn 管理员用户可以在与提交问题的用户相同的本地 PC 上执行操作。
  • 大写/小写 URL 不是问题,我已经检查过
  • NTLM 和 Active Directory 也不是问题,因为他可以使用相同的权限文件访问另一个存储库。
  • 同一个 repo 的其他用户正在试验同样的问题。虽然我仍然可以在他们的本地 PC 上进行提交。 (就像他们没有书面许可一样)

  • 以下是 Apache 日志:

    Apache 错误日志

    [dd mm 12:38:02 2011] [error] [client 10.x.x.x] Access denied: 'foobar' MKACTIVITY MYREPO:

    [dd mm 12:39:40 2011] [error] [client 10.x.x.x] Access denied: 'foobar' MKACTIVITY MYREPO:

    [dd mm 12:39:54 2011] [error] [client 10.x.x.x] Access denied: 'foobar' MKACTIVITY MYREPO:



    Apache访问.log

    10.x.x.x - foobar [dd/mmm/yy:12:38:02 GMT] "OPTIONS /svn/myDir/MYREPO HTTP/1.1" 200 198

    10.x.x.x - foobar [dd/mmm/yy:12:38:02 GMT] "PROPFIND /svn/myDir/MYREPO HTTP/1.1" 207 667

    10.x.x.x - foobar [dd/mmm/yy:12:38:02 GMT] "MKACTIVITY /svn/myDir/MYREPO/!svn/act/65bf494c-a66a-4f45-870e-d988f691a45d HTTP/1.1" 403 266



    svn_activity.log

    [dd/mmm/yy:12:34:20 -0300] waldo commit r2

    [dd/mmm/yy:12:39:07 -0300] fred status /src/trunk r1447



    从 svn_activity.log 我可以推断出 Apache 捕获并退回访问,因为在之前公开的时间范围内没有 foobar 访问。

    所以,希望我收集的数据有助于解决这个问题……有什么想法吗?

    最佳答案

    我找到了!
    好的,这是答案:
    出了什么问题:
    我的用户在/svn/myDir/MYREPO 目录中 checkout 一个 Repo
    Apache 知道他必须将 MYREPO 转换为小写目录,因此当您 checkout 或执行任何读取操作时,这一切正常。
    但是当用户确实尝试执行提交操作时 Apache 更改
    不知何故,他必须执行的操作顺序才能满足用户的请求,首先接受写入操作并尝试写入,然后更改为小写。
    再次,它尝试写入/svn/myDir/MYREPO ,问题在于:

  • 权限设置为 myrepo 而不是 MYREPO
  • 实际的 repo 是 myrepo 而不是 MYREPO

  • 所以...... MYREPO 不存在! myrepo 可以。这就是它抛出该错误的原因:
  • 访问被拒绝,因为没有为 MYREPO 写入许可。
  • 它确实以读取方式识别 repo,因为 apache 了解您的要求并进行翻译。

  • 但是对于写作来说,首先使用它,然后需要一点时间来理解他在做什么。并且异常出现在理解之前,因此Apache永远不会到达那里。
    如何解决:
    这是最简单的事情:
  • 转到 checkout 的 Repo
  • 从 http://YourServer/svn/myDir/MYREPO 重新定位到 http://YourServer/svn/myDir/myrepo

  • 我的建议:
    从现在开始,我对 svn-administrator 和用户的建议是
    一切小写......对不起,我更正自己:
    全部小写!

    关于apache - 提交访问被拒绝 : 'foobar' MKACTIVITY MYREPO: 时出现 SVN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572575/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com