簡體   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