Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何限制通过WebVN访问存储库?_Svn_Apache_Access Control_Websvn - Fatal编程技术网

Svn 如何限制通过WebVN访问存储库?

Svn 如何限制通过WebVN访问存储库?,svn,apache,access-control,websvn,Svn,Apache,Access Control,Websvn,注意:我最初是在上问这个问题的,但到目前为止只得到一个回答,我越是思考这个问题,就越意识到它可能对stackoverflow更好 我有多个subversion存储库,它们是通过Apache2.2和WebDAV提供的。它们都位于一个中心位置,我以本文为基础(不过我放弃了对一个简单的htpasswd文件使用数据库身份验证) 从那时起,我也开始使用。我的问题是,并非系统上的所有用户都应该能够访问不同的存储库,WebVN的默认设置是允许任何可以进行身份验证的人 根据WebVN文档,解决此问题的最佳方法是

注意:我最初是在上问这个问题的,但到目前为止只得到一个回答,我越是思考这个问题,就越意识到它可能对stackoverflow更好

我有多个subversion存储库,它们是通过Apache2.2和WebDAV提供的。它们都位于一个中心位置,我以本文为基础(不过我放弃了对一个简单的htpasswd文件使用数据库身份验证)

从那时起,我也开始使用。我的问题是,并非系统上的所有用户都应该能够访问不同的存储库,WebVN的默认设置是允许任何可以进行身份验证的人

根据WebVN文档,解决此问题的最佳方法是使用subversion的路径访问系统,因此我希望使用authzsvnacessfile指令创建此系统

当我这么做的时候,我总是收到“403禁止”的信息

我的文件如下所示:

我在文件中有默认策略设置:

<Location /svn/>
  DAV svn
  SVNParentPath  /var/lib/svn/repository

  Order deny,allow
  Deny from all
</Location>
我不完全确定为什么我需要default_auth.conf中的第二个SVNParentPath,但我只是在今天添加了它,因为添加authzsvnacessfile指令后,我收到了错误消息

使用完全允许访问的文件

[/]
joebloggs = rw
系统运行良好(基本上没有变化),但一旦我开始尝试添加任何类型的限制,例如

[sysadmin:/]
joebloggs = rw
相反,我再次出现“权限被拒绝”错误。日志文件条目包括:

[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
我需要做些什么才能让它工作?配置apache错误,或者我对svnaccess.conf文件的理解不正确

如果我走错了方向,我对我的整体方法没有特别的依恋,所以也可以自由地提供替代方案

更新(20090528-1600):

我试图实现,但仍然无法使其正常工作

正如我所补充的,我知道大多数配置都是正确的

[/]
joebloggs = rw
开始时,“joebloggs”具有所有正确的访问权限

但是,当我尝试使用特定于存储库的方法时

[/]
joebloggs = rw

[sysadmin:/]
mickmurphy = rw
然后,我得到了一个mickmurphy的权限拒绝错误(joebloggs仍然有效),这个错误与我之前的错误类似

[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
此外,我忘了在前面解释我的所有存储库都在下面

/var/lib/svn/repository
更新(20090529-1245):

仍然没有运气让它工作,但所有的迹象似乎都指向了subversion中的路径访问控制无法正常工作的问题。我的假设是,我没有配置apache或svn来正确识别我的存储库结构

这是因为“[/]”项似乎工作正常


我还想到,这个问题可能更适合StackOverflow?

您可以使用apache的htpasswd实用程序(位于bin目录中)生成md5密码文件

然后,在httpd.conf中:

<Location /svn>
     DAV svn
     SVNParentPath "repo path"
     AuthType Basic
     AuthName "Repository"
     AuthUserFile "password file path"
     Require valid-user
     SVNListParentPath on #if you want a repository listing for the whole svn directory
</Location>

DAV svn
SVNParentPath“回购路径”
AuthType Basic
AuthName“存储库”
AuthUserFile“密码文件路径”
需要有效用户
SVNListParentPath on#如果需要整个svn目录的存储库列表
这将需要用户身份验证,并且只有位于密码文件(来自htpasswd)中的用户名/密码组合才会被接受访问

此外,您还可以指定对所有人的只读访问,但通过以下方式(在位置标记内)使用密码文件进行提交等操作:


需要有效用户
如果我了解您需要什么,这应该可以解决用户级访问的问题

编辑:


我忘了提到,如果您确实使用密码文件,请确保它不能通过web访问(即,在存储它的apache中没有分配别名或目录)。

您可以使用apache的htpasswd实用程序(位于bin目录中)生成md5密码文件

然后,在httpd.conf中:

<Location /svn>
     DAV svn
     SVNParentPath "repo path"
     AuthType Basic
     AuthName "Repository"
     AuthUserFile "password file path"
     Require valid-user
     SVNListParentPath on #if you want a repository listing for the whole svn directory
</Location>

DAV svn
SVNParentPath“回购路径”
AuthType Basic
AuthName“存储库”
AuthUserFile“密码文件路径”
需要有效用户
SVNListParentPath on#如果需要整个svn目录的存储库列表
这将需要用户身份验证,并且只有位于密码文件(来自htpasswd)中的用户名/密码组合才会被接受访问

此外,您还可以指定对所有人的只读访问,但通过以下方式(在位置标记内)使用密码文件进行提交等操作:


需要有效用户
如果我了解您需要什么,这应该可以解决用户级访问的问题

编辑:


我忘了提到,如果您确实使用密码文件,请确保它不能通过web访问(即,在存储它的apache中没有分配别名或目录)。

您必须为每个人提供根目录的读取权限。然后根据需要从特定存储库中删除读取权限。使用用户组可能有助于保持配置的小型化

您可以这样尝试一下:

[/]
* = r

[sysadmin:/]
mickmurphy =
joebloggs = rw

您必须为每个人提供根目录的读取权限。然后根据需要从特定存储库中删除读取权限。使用用户组可能有助于保持配置的小型化

您可以这样尝试一下:

[/]
* = r

[sysadmin:/]
mickmurphy =
joebloggs = rw

我已经有了一个.htpasswd文件,一切正常。当我使用上面列出的svnaccess.conf文件尝试使用subversion基于路径的访问控制时,就会出现问题。我的直觉告诉我,上面的配置几乎是正确的,我要么省略了Apache指令,要么在编写svnaccess.conf文件以获取所需内容的过程中遗漏了一些内容。嗨@Chris S你能帮我一下吗?我已经有了一个.htpasswd文件,一切正常。当我尝试使用subversion的基于路径的访问控制,使用我列出的svnaccess.conf文件时,就会出现问题
[/]
* = r

[sysadmin:/]
mickmurphy =
joebloggs = rw