Svn / Apache用户访问“500内部错误”“需要AuthName”问题

时间:2011-03-18 04:48:45

标签: svn apache authorization

尝试设置SVN以使用HTTP,用户/ auth用户访问文件。

我在Apache服务器的subversion.conf中有以下内容:

<Location /repos>
  DAV svn
  SVNPath /apps/CollegeDir/CollegeRepository/

       AuthzSVNAccessFile /asvn/svnAccessAuthz
       AuthType Basic
#      AuthName "Subversion Repository"
       AuthUserFile /asvn/svnUserAuthz
       Require valid-user
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
#      AuthType Basic
#      AuthName "Authorization Realm"
#      AuthUserFile /path/to/passwdfile
#      Require valid-user
#   </LimitExcept>
</Location>

我在用户/密码auth文件中有以下内容(每个文件都已设置 以apache / apache / 766作为测试)

/asvn/svnAccessAuthz
[/]
* = rw

[/repos]
* = rw

[/repos/trunk]
* = rw

[repos:/]
* = rw

[repos:/trunk]
* = rw

[/trunk]
* = rw



/asvn/svnUserAuthz
bill:$apr1$NsGWbE/9$695MXkrm8x06hMabC3Hu71

the svnUserAuthz file was create using:
 htpasswd -mb /etc/svnUserAuthz  bill qqqqqq

当我尝试访问repos时,使用以下内容我得到内部 500错误,apache err日志中有“Need Authname / foo”。

svn list --username bill --password qqqqqq http://192.168.1.45/repos
svn: Server sent unexpected return value (500 Internal Server Error)
   in response to OPTIONS request for 'http://192.168.1.45/repos'

error_log是:

 [Thu Mar 17 21:08:38 2011] [error] [client 192.168.1.45] need AuthName: /repos/
 [Thu Mar 17 21:08:43 2011] [error] [client 192.168.1.45] need AuthName: /repos/trunk

如果我注释掉

#       AuthzSVNAccessFile /asvn/svnAccessAuthz
#       AuthType Basic
#       AuthName "Subversion Repository"
#       AuthUserFile /asvn/svnUserAuthz
#       Require valid-user
然后我可以轻松访问repos,所以我搞砸了 用户/密码访问过程。

我已将/ asvn和svn文件的访问权限设置为:

 chmod 766
 chown apache.apache

所以apache服务器完全可以访问这些文件......

我在auth文件中尝试了很多组合来尝试使用它 允许测试用户访问,但我完全被难倒了。

非常感谢思考/评论/指示。

由于

2 个答案:

答案 0 :(得分:2)

我有一个bash脚本,我可以卖:) 它甚至创建了我的svn钩子:) 我认为你不应该将auth名称注释掉

在这里,我从我的一个svns给你一些工作配置。

<Location />
DAV svn
SVNPath '/var/svn/web1339/reproname'
SVNAutoversioning on
AuthType Basic
AuthName 'svn - reproname'
AuthUserFile '/var/svn/web1339/reproname/dav_svn.passwd'
Require valid-user
</Location>

repro由apache用户拥有,它可以是apache或www-data取决于你的系统。 apos on centos。关于debian的www-data。

使用htpasswd工具,您可以编辑密码文件。

                        htpasswd -bcs  "${reprofolder}/dav_svn.passwd" "$3" "$4"

$ 3应该是用户名$ 4是密码。

玩得开心,祝你好运。

答案 1 :(得分:0)

一种可能性(来自问题中的摘录)svnUserAuthz文件存在于/etc而非/asvn,正如apache配置所预期的那样。