Apache svn.accessfile困难
我们在apache上为多个项目和业务文件托管一个svn存储库。这是由多个程序员访问的,一些项目文件夹也是由客户端访问的。布局示例如下: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
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以完美地工作,抱歉花了这么长时间尝试此操作不要紧,只要您回来:-)