1

mysql認証でmod_dav_svnを使用するようにApacheサーバー上のサイトを構成しようとしています。

私はこのような3つのテーブルを持つデータベースを使用しています

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エントリを追加して、さまざまな場所の「リポジトリ」を新しいリポジトリ名に置き換え、個々のリポジトリへの制御されたrwアクセスを提供することもできます。

私の問題は、リポジトリへの読み取り専用アクセスと、匿名の読み取り専用アクセスを追加できないことです。

追加できるはずだと読んだ

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

セクションへのアクセスとこれはリポジトリへの読み取り専用アクセスを提供するはずですが、私はこれを機能させることができませんでした。mysqlログを調整すると、repo_rwのみが照会されます。

誰かアドバイスがあれば、とてもありがたいです!

4

1 に答える 1

0

この方法だけではうまくいかないようです。ネット上にはそれが可能であることを示唆する多くのリソースがありますが、現在のバージョンの apache/mysql/modules では動作しないようです。

詳細なアクセス制御には 2 つのオプションがあります。1) auth ファイルのみ、mysql 認証をスキップして標準の apache auth メソッドを使用する、または 2) ユーザーが持つアクセス権を定義するフック スクリプトを変更する。

于 2009-12-12T20:55:40.677 に答える