我在这里有一个独特的场景 – 一个可能已经出现在过去的场景。 我有一个在我的Apache服务器上受LDAPauthentication保护的目录。 在这个目录下(称为/ svn – 是的,这是一个颠覆目录),有项目作为子目录。
我想限制基于组文件访问此子目录的用户。 但是,我不想为每个创build的项目在我的httpd.conf
文件中添加一个特殊的行。 相反,子目录的URL将匹配组的名称。
例如,我可能有“日历”项目。 我的SVN URL是“ http://myserver.com/svn/caldendar ” – 唯一有权访问这个仓库的用户将被列在我的groups.txt
文件中,如下所示:
calendar:user1 user2
所以即使有人可以通过LDAP进行身份validation,也只允许user1
和user2
进入。
有没有更简单的方法来做到这一点? 也许为子目录设置一个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重启!)