AuthzSVNAccessFile 如何工作?

AuthzSVNAccessFile 如何工作?

我已经设置了一个具有 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>

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

[first:/]
doe = rw
* = r

[second:/]
doe = rw
grig = rw
* = r

当我尝试使用用户 doe 签出第二个时,我在 error_log 中收到此信息:用户 doe:“/svn/second”的身份验证失败:密码不匹配

为了理解可能存在的问题,我想更好地了解 AuthzSVNAccessFile 应该如何工作。

答案1

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

[/]
* = r

[first:/]
doe = rw

[second:/]
doe = rw
grig = rw

或者您可以将用户 doe 和 grig 放入一个组并执行以下操作:

[groups]
secondteam = doe, grig

[/]
* = r

[first:/]
doe = rw

[second:/]
@secondteam = rw

您提到您希望更好地了解 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

答案2

您是否使用“htpasswd”将 doe 用户添加到 /home/svn/dav_svn.passwd 或它来自某种类型的前端管理员?

例如,我在使用 Virtualmin/Webmin 时遇到了问题,他们以不同于 apache 的格式编辑 htpasswd 文件,并且通过使用 htpasswd 重新添加用户解决了该问题。

答案3

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

first名称在哪里,以及/svn/firstrepo 的路径是什么。

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

相关内容