Ubuntu + SVN:无法打开请求的SVN文件系统

时间:2012-09-28 17:41:25

标签: apache svn ubuntu webdav

我知道很多次都会问过这个问题。我相信我理解答案,但我仍然没有运气。

我尝试了两种one repomultiple repos配置,对它们都有同样的问题。

所以,使用我感兴趣的配置:

<Location /svn>
  DAV svn
  #SVNPath /media/ssd/svn/test
  SVNParentPath /media/ssd/svn
  SVNListParentPath On
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>

我的存储库

luso@bender:/media/ssd/svn$ ls -lart
total 16
drwx------ 7 luso     luso 4096 2012-09-15 16:20 ..
drwxr-sr-x 6 www-data svn  4096 2012-09-24 22:13 test
drwxrwsr-x 4 www-data svn  4096 2012-09-24 22:31 .
drwxr-sr-x 6 www-data svn  4096 2012-09-24 22:31 test2

项目内部

luso@bender:/media/ssd/svn/test$ ls -lart
total 32
-rw-r--r-- 1 www-data svn  229 2012-09-24 22:13 README.txt
drwxr-sr-x 2 www-data svn 4096 2012-09-24 22:13 locks
drwxr-sr-x 2 www-data svn 4096 2012-09-24 22:13 hooks
drwxr-sr-x 2 www-data svn 4096 2012-09-24 22:13 conf
-r--r--r-- 1 www-data svn    2 2012-09-24 22:13 format
drwxr-sr-x 6 www-data svn 4096 2012-09-24 22:13 .
drwxrwsr-x 4 www-data svn 4096 2012-09-24 22:31 ..
drwxr-sr-x 6 www-data svn 4096 2012-09-24 22:40 db

用户 luso www-data 位于 svn和www-data组中。但是,当/ system / administration / users和groups时,如果我选择www-data用户,则会出现警告:此帐户被禁用¿¿??如果我尝试启用它,它会要求我设置密码。我没有这样做......

/ media / ssd是我的/ dev / sdc驱动器(ssd驱动器)

我可以使用file:// protocol

luso@bender:~$ svn co file:///media/ssd/svn/test test
A    test/.classpath
A    test/.project
A    test/target
A    test/target/test-my-app-0.0.1-SNAPSHOT.jar
...
...

然而,

luso@bender:~$ svn co http://localhost/svn/test test and
luso@bender:~$ svn co http://localhost/svn/test/trunk test

引导我:

Authentication realm: <http://localhost:80> Subversion Repository
Password for 'luso': 
svn: Could not open the requested SVN filesystem

更准确地说

<D:error xmlns:D="DAV:" xmlns:m="http://apache.org/dav/xmlns" xmlns:C="svn:">
<C:error/>
<m:human-readable errcode="13">Could not open the requested SVN filesystem</m:human-readable>
</D:error>

当然,如果我尝试通过网络浏览器访问,也会发生同样的事情......

如果我改变

,也会发生同样的情况
#SVNPath /media/ssd/svn/test
SVNParentPath /media/ssd/svn
SVNListParentPath On

with:

SVNPath /media/ssd/svn/test
#SVNParentPath /media/ssd/svn
#SVNListParentPath On

并重新加载/重启apache2

此外,尝试通过https://访问时也会发生同样的情况。

我读过一些表明SELinux有事可做的事,但我不敢改变这一点。我真的不知道怎么......

它可能与权限发生某种冲突吗? / media / ssd驱动器由luso拥有......(不知道,只是猜测)

那么还有其他线索吗?

我正在运行Ubuntu 10.04,Apache2和StackOverflow:D

谢谢大家。

编辑:根据p_strand的建议,我添加了一行

AuthzSVNAccessFile /etc/apache2/svn-policy-file

在dav_svn.conf config

现在,如果我尝试http://localhost/svn/test它仍然是相同的,如果我尝试http://localhost/svn我得到 403禁止

2 个答案:

答案 0 :(得分:11)

luso@bender:/media/ssd/svn$ ls -lart
total 16
drwx------ 7 luso     luso 4096 2012-09-15 16:20 ..

这可能是您的问题 - 虽然www-data用户可以访问存储库目录,但它们的父目录/media/ssd却不是。它及其在树上的所有父目录至少需要世界执行权限(rwx--x--x或711)。不需要允许www-data用户读取这些目录,但它确实需要能够进入它们(这是执行位对目录的意义)。

答案 1 :(得分:-1)

如果有人遇到类似问题,这是我的决议: 我有root拥有的文件“/ var / svn / format”,尽管设置了所有权限(777),但apache不想读取root拥有的文件。 只需一个简单的chown命令即可​​解决问题。