AuthzSVNAccessFile 如何工作?

gri*_*igy 5 svn webdav

我已经设置了一个具有 WebDAV 访问权限的 SVN 存储库。出于某种原因,它不允许结帐。

这是我的 httpd.conf 部分:

<Location /svn>
  DAV svn
  SVNParentPath /home/svn/repositories
  AuthzSVNAccessFile /home/svn/dav_svn.authz
  Satisfy Any
  Require valid-user
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /home/svn/dav_svn.passwd
</Location>
Run Code Online (Sandbox Code Playgroud)

我有两个名为“first”和“second”的存储库,dav_svn.authz 的内容是:

[first:/]
doe = rw
* = r

[second:/]
doe = rw
grig = rw
* = r
Run Code Online (Sandbox Code Playgroud)

当我尝试使用用户 doe 签出第二个时,我在 error_log 中得到这个信息:user doe: authentication failure for "/svn/second": Password Mismatch

为了了解可能是什么问题,我想更好地了解 AuthzSVNAccessFile 应该如何工作。

run*_*six 7

错误是否仅发生在两个存储库上的用户 doe 上?或者它在第二个存储库上的 grig 失败了吗?假设它对所有用户都失败,并且假设错误不在 AuthUserFile 中并且 SVNParentPath 是正确的,我认为您需要为所有存储库添加默认访问规则。

[/]
* = r

[first:/]
doe = rw

[second:/]
doe = rw
grig = rw
Run Code Online (Sandbox Code Playgroud)

或者您可以将用户 doe 和 grig 放入一个组中,并按如下方式进行:

[groups]
secondteam = doe, grig

[/]
* = r

[first:/]
doe = rw

[second:/]
@secondteam = rw
Run Code Online (Sandbox Code Playgroud)

您提到您想更好地了解 AuthzSVNAccessFile 应该如何工作。我建议阅读本教程。该教程中用于支持多个存储库的完整基于路径的授权文件示例如下:

[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak

# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =

# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw

# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw

# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw
Run Code Online (Sandbox Code Playgroud)


小智 0

只是一个检查(我不确定,我稍后会检查),但语法不应该是吗 [first:/home/svn/first]

first名称在哪里,以及/svn/first存储库的路径。

不确定它是否会解决问题,但我猜您当前的conf文件并不完全是您想要的。