Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Apache svn.accessfile困难_Apache_Svn - Fatal编程技术网

Apache svn.accessfile困难

Apache svn.accessfile困难,apache,svn,Apache,Svn,我们在apache上为多个项目和业务文件托管一个svn存储库。这是由多个程序员访问的,一些项目文件夹也是由客户端访问的。布局示例如下: svn/ourcompany/business svn/ourcompany/projects svn/ourcompany/projects/proj1 svn/ourcompany/projects/proj2 svn/ourcompany/projects/proj3 以前,我们的svn.access文件如下所示: [groups] admin = j

我们在apache上为多个项目和业务文件托管一个svn存储库。这是由多个程序员访问的,一些项目文件夹也是由客户端访问的。布局示例如下:

svn/ourcompany/business
svn/ourcompany/projects
svn/ourcompany/projects/proj1
svn/ourcompany/projects/proj2
svn/ourcompany/projects/proj3
以前,我们的svn.access文件如下所示:

[groups] 
admin = jd 
programmer = jd,pr1,pr2

[ourcompany:/]
@admin = rw

[ourcompany:/business]
@admin = rw

[ourcompany:/projects]
@admin = rw
@programmer = rw

[ourcompany:/projects/proj1]
client1a = rw
client1b = rw
webclient = rw
今天,我们发现此设置导致我们公司:/projects/proj1上的WebClient 1出现403错误

经过一些研究后,一位承包商建议添加

[groups] 
admin = jd 
programmer = jd,pr1,pr2

[ourcompany:/]
* = r
@admin = rw

[ourcompany:/business]
* =
@admin = rw

[ourcompany:/projects]
@admin = rw
@programmer = rw

[ourcompany:/projects/proj1]
client1a = rw
client1b = rw
webclient = rw
但现在这意味着我需要补充一点

*= 
到项目文件夹中的每个项目

是否有人可以就svn.accessfile中的权限在文件夹层次结构中的工作方式提供建议

下面是apache虚拟主机

    <VirtualHost ipadress:80>

            ServerName subversion.ourcompany.com
            ServerAdmin webmaster@ourcompany.com
            DocumentRoot /var/www/subversion.ourcompany.com
            DavLockDB /var/lock/apache2/DavLock 

            <Location /svn>
                    DAV svn
                    SVNParentPath /var/svn
                    SVNListParentPath on
                    SVNAutoversioning on
                    SVNIndexXSLT "/repos-web/view/repos.xsl"
                    #ModMimeUsePathInfo on
                    AuthzSVNAccessFile /etc/apache2/svn.accessfile
                    AuthType Basic
                    AuthName "SVN"
                    AuthUserFile /etc/apache2/svn.passwd
                    Require valid-user

                    # compress as much as possible
                    SetOutputFilter DEFLATE
                    SetInputFilter DEFLATE
                    # Don't compress images
                    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
            </Location>

            <IfModule mpm_itk_module>
                    AssignUserId www-data www-data
            </IfModule>

            DeflateFilterNote Input instream
            DeflateFilterNote Output outstream
            DeflateFilterNote Ratio ratio

            LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) %s' deflate
            CustomLog /var/log/apache2/svn-deflate.log deflate
            CustomLog /var/log/apache2/svn-access.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION
            ErrorLog /var/log/apache2/svn-error.log


    </VirtualHost>

ServerName subversion.ourcompany.com
服务器管理员webmaster@ourcompany.com
DocumentRoot/var/www/subversion.ourcompany.com
DavLockDB/var/lock/apache2/DavLock
DAV svn
SVNParentPath/var/svn
SVNListParentPath打开
SVNAutoversioning on
svnindexlt“/reposweb/view/repos.xsl”
#ModMimeUsePathInfo打开
authzsvnacessfile/etc/apache2/svn.accessfile
AuthType Basic
AuthName“SVN”
AuthUserFile/etc/apache2/svn.passwd
需要有效用户
#尽量压缩
SetOutputFilter放气
设置输入过滤器放气
#不要压缩图像
SetEnvIfNoCase请求_URI\(?:gif | jpe?g | png)$no gzip不变
分配用户ID www数据www数据
放气过滤器注流输入
放气过滤器注输出超出流
排气过滤比
LogFormat'%r'%{outstream}n/%{instream}n(%{ratio}n%%)%s'放气
CustomLog/var/log/apache2/svn-deflate.log deflate
CustomLog/var/log/apache2/svn-access.log“%t%u%{svn-ACTION}e”env=svn-ACTION
ErrorLog/var/log/apache2/svn-error.log
我们希望实现的目标:


webclient只能访问我们的公司:/projects/proj1,不能读取我们的公司:/projects。后者可以通过在我们公司:/projects的每个子文件夹中放置一个*=来实现,但这是不可行的。

我想首先给出以下建议:

  • 尝试定义组并在访问文件的规则中仅使用组。这使得以后更改内容和理解规则更加容易
  • 使用表示组的语义的组名。这也使得规则更容易理解
  • 尽量只给每个用户一个组,以便更容易理解该用户的角色(以及访问权限)
我将更改/添加一些部分,以便完整的结果文件为:

[groups] 
admin = jd 
programmer = jd,pr1,pr2
gr_client1 = client1a,client1b,webclient1

[ourcompany:/]
* = 
@programmer = r
@gr_client1 =
@admin = rw

[ourcompany:/projects]
@programmer = rw

[ourcompany:/projects/proj1]
@gr_client1 = rw
这表示了以下几点

  • 您有三组用户:管理员、程序员和单个项目的客户机(在示例gr_client1中)
  • 总体访问权限规定管理员可以读取和写入所有内容。您不必在子目录中重复该规则,它是自动继承的
  • 程序员可以读取任何内容,并在所有项目中拥有额外的写访问权限
  • 客户端只能访问其单独的目录,并且可以在其中读写
因此,您必须为每个新组添加一个额外的客户端组,在那里添加用户,并仅为其单个项目添加一条规则


PS:在您的问题中使用了
webclient1
,但在您提供的文件中,它只是
webclient
。您想要哪一个?

您能提供您想要达到的总体目标吗?哪些组应具有对哪些文件夹的访问权限?目前,有很多信息,但我看不出你想要得到什么。请将这一点添加到问题中,我们应该能够提出一个替代访问文件。我们已更新了问题,感谢您返回meseems以完美地工作,抱歉花了这么长时间尝试此操作不要紧,只要您回来:-)