Apachevalidation组的匹配子目录

我在这里有一个独特的场景 – 一个可能已经出现在过去的场景。 我有一个在我的Apache服务器上受LDAPauthentication保护的目录。 在这个目录下(称为/ svn – 是的,这是一个颠覆目录),有项目作为子目录。

我想限制基于文件访问此子目录的用户。 但是,我不想为每个创build的项目在我的httpd.conf文件中添加一个特殊的行。 相反,子目录的URL将匹配组的名称。

例如,我可能有“日历”项目。 我的SVN URL是“ http://myserver.com/svn/caldendar ” – 唯一有权访问这个仓库的用户将被列在我的groups.txt文件中,如下所示:

 calendar:user1 user2 

所以即使有人可以通过LDAP进行身份validation,也只允许user1user2进入。

有没有更简单的方法来做到这一点? 也许为子目录设置一个variables,并说Require ldap-group variable

谢谢!

经过进一步调查,我find了解决scheme的forms的SVN访问控制。

使用authz_svn_module ,我在Apacheconfiguration中的Subversion目录如下所示:

 <Location /svn> # Tell apache this is a subversion repository DAV svn # Where the subversion repository list exists on the file system SVNParentPath "/var/svn" # What kind of authentication AuthType Basic AuthName "Restricted!" AuthBasicProvider ldap AuthLDAPBindDN "YOUR BIND DN" AuthLDAPBindPassword "YOUR BIND PASSWORD" AuthLDAPURL "ldaps://yourldapserver.com:636/other_info" AuthzSVNAccessFile /etc/httpd/svnaccess.txt Require valid-user </Location> 

很基本 – 这里重要的一行是AuthzSVNAccessFile – 它指向将自动生成的文件,并保存哪些用户有权访问哪些目录。

这个“svnaccess.txt”文件看起来像这样:

 [project1:/] joe_user = rw mary_beth = rw $anonymous = r [project2:/] james_smith = rw [project3:/] john_deere = rw $anonymous = r 

这里列出的用户名是LDAPauthentication的用户名。 它们不需要被Subversion注册(它们是在用户身份validation后携带的)。 @anonymous是通配符:任何未经过身份validation的人,或者可能满足Apacheconfiguration中的另一个Allow指令的人。 这个文件只能由root(或者启动Apache服务的人)读取。

这个文件的创build可以自动生成 – 取决于你的信息来自哪里。 在我的情况下,我有一个Redmine服务器,它保存有关用户和项目的信息,以及哪个用户可以访问哪个项目。 可以编写一个简短的Python脚本来从数据库中提取信息,并自动生成该文件(如果用作cron作业)。 这是一种循环的做事方式,但是在您使其工作并自动化之后,您无需担心为每个新创build的项目/ Subversion存储库重新编写身份validation规则。

(从另一方面来说,对这个“svnaccess.txt”文件的更改不需要Apache重启!)