我正在尝试在我的 Apache 服务器上配置一个站点以使用带有 mysql 身份验证的 mod_dav_svn。
我正在使用一个包含三个这样的表的数据库
auth_users
----------
uid username passwd
1 UserA pass
2 UserB pass
.
auth_groups
-----------
gid group
1 repo_rw
2 repo_ro
.
users_groups
uid gid
1 1
2 2
所以:-
UserA 是组 repo_rw 的成员 UserB 是组 repo_ro 的成员
然后我在我的 httpd.conf 文件中使用以下内容:-
<VirtualHost *:80>
DocumentRoot /var/www
ServerName repo.srv.domain.com
ServerPath /var/www
<Location /svn>
DAV svn
SVNPath /var/svn/repo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /dev/null
AuthBasicAuthoritative Off
AuthMySQL_Authoritative on
AuthMySQL_Empty_Password off
AuthMySQL_Encryption_Types Plaintext
AuthMySQL_Password_Table "auth_users u"
AuthMySQL_Username_Field "u.username"
AuthMySQL_Password_Field "u.passwd"
AuthMySQL_Group_Table "auth_groups g RIGHT JOIN users_groups ug ON (ug.gid=g.gid) RIGHT JOIN auth_users u ON (ug.uid=u.uid)"
AuthMySQL_Group_Field "g.group"
<Limit GET PROPFIND OPTIONS REPORT>
Require group repo_rw
</Limit>
</Location>
</VirtualHost>
在此配置中,我可以授予用户对存储库 /var/svn/repo 的 rw 访问权限,并作为此存储库的有效用户进行身份验证。
我还可以添加多个 VirtualHost 条目,将各个位置的“repo”替换为新的存储库名称,并提供对单个存储库的受控 rw 访问。
我的问题是我无法添加对存储库的只读访问权限,也无法添加匿名只读访问权限。
我已阅读应该可以添加
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require group repo_ro
</Limit>
到该部分,这应该提供对存储库的只读访问权限,但是我无法完成这项工作。跟踪 mysql 日志显示只有 repo_rw 被查询。
如果有人可以提供任何建议,我将非常感激!