在Apache2中使用mod_dav_svn进行身份validation

我在Apache2中为使用mod_dav_svn提供服务的SVN存储库设置身份validation时遇到了一些麻烦。

这是我的Apacheconfiguration目录:

<Location /svn> DAV svn SVNParentPath /var/svn/repos AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dev.passwd Require valid-user </Location> 

我可以使用svn/var/svn/repos下的项目,所以我知道DAV正在工作,但是当我做svn更新或提交(或任何东西),Apache不要求任何身份validation…它无论Auth指令是否存在,完全相同。

版本库目录(以及所有子目录/文件)上的权限仅授予www-data(Apache2用户/组)的权限。

我还确保所有相关的模块都已启用(特别是mod_auth已启用,所有mod_dav *模块都已启用)。

任何想法为什么svn命令不authentication

提前致谢。

你的Subversion客户端是否caching了凭据 ?

你有没有尝试做一个非dav_svn(基本上是一个普通的networking目录),并检查权限是否工作?

例如,你可以尝试这样的事情:

 <Location /test_auth> AuthType Basic AuthName "TEST TEST TEST" AuthUserFile /etc/apache2/dev.passwd Require valid-user </Location> 

如果你还没有阅读,请阅读。

如果这不起作用…

你肯定没有任何.htaccess .htpasswd文件不覆盖httpd.conf中的authentication例程吗?

Apache有一个全面的inheritance模型,对于习惯来说非常棘手的权限。 如果您的权限在此处设置正确,则可能会被层次结构中较低的设置阻止,或者被层次结构中的较高层次所覆盖。

我希望我可以给你一个更具体的答案,但是我对阿帕奇的攻击通常是让我把头撞在墙上几天,以便把它做好。

一些想法,按照顺序:

  1. 检查日志文件,看看发生了什么事情。 也许这会澄清问题。
  2. Apacheconfiguration更改要求您重新加载Apache。 如果你不这样做,你的改变将永远不会消失。
  3. 您已指定用户身份validation但未授权。 做一个明确的svn authz并添加它。 我不确定SVN在没有授权文件的情况下做了什么。
  4. Ubuntu 10.04 LTS发布; 我build议从8.04 LTS升级。 它可以神奇地解决问题,更新内核,SVN和Apache。

这听起来像你最有可能有某种重叠的configuration,这是防止SVN按预期工作。

使用webbrowser浏览版本库中的不同子目录时会发生什么? 它是否总是要求用户名/密码? 尝试使用wget或curl从命令行浏览存储库。 这些命令行实用程序不会保留会话信息,因此您可以快速地将请求发送到不同的URL,快速使用不同的用户名和密码等。

启用mod_info 。 mod_info将会创build一个页面(默认情况下是http://www.example.org/server-info ),它将详细地整合你的整个configuration。 这允许您查看重叠的configuration文件(例如/etc/apache2/conf//etc/apache2/conf.dconfiguration文件)是否导致问题。

Apache的inheritance模型有时候很难被挖掘。 我发现mod_info可以帮助我更清楚地看到事情。 令人满意的指示可能是责任。

一定要限制mod_info只允许从您的IP地址/networking访问。

另一个build议,创build一个不同的访问path的第二个存储库,并确保这些东西竞争在第一个存储库的名称空间之外。 这将有助于消除您现有的SVN回购下的exception情况。

像这样的东西:

 <Location /svntest> DAV svn SVNParentPath /tmp/test/repos AuthType Basic AuthName "TEST" AuthUserFile /tmp/test/test.passwd Require valid-user </Location> 

问题是否仍然存在? 如果是这样,那么你的问题是由于在Apacheconfiguration奇怪。 如果问题没有发生,那么问题是由于subversion版本库在/ var / svn / repos下的configuration问题造成的。