繁体   English   中英

使用Mysql和Apache的Subversion访问控制(mod-dav-svn,mod-auth-sql,apache,mysql)

[英]Subversion Access Control using Mysql and Apache (mod-dav-svn, mod-auth-sql, apache, mysql)

我正在尝试在我的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>

在此配置中,我能够为用户提供rw访问资源库/ var / svn / repo的权限,该资源已被验证为该资源库的有效用户。

我还能够添加多个VirtualHost条目,将各个位置的“ repo”替换为新的存储库名称,并提供对单个存储库的受控rw访问。

我的问题是我无法添加对存储库的只读访问权限,也无法添加匿名只读访问权限。

我已阅读,应该可以添加

<LimitExcept GET PROPFIND OPTIONS REPORT>
  Require group repo_ro
</Limit>

到本节,这应该提供对存储库的只读访问权限,但是我无法进行这项工作。 跟踪mysql日志显示仅repo_rw被查询。

如果有人可以提供任何建议,我将非常感谢!

看来这种方法行不通。 网络上有大量的资源表明它可以使用,但是似乎没有一个可以与当前版本的apache / mysql / modules一起使用。

粒度访问控制有两种选择:1)仅进行身份验证文件,跳过mysql身份验证并使用标准的apache身份验证方法,或2)对钩子脚本进行修饰以定义访问用户的权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM