1

svn-access の認証に berkeley-db を使用しています。

次のように構成しました。

<Location /svn>
    AuthType basic
    AuthName "svn Authentication"

    AuthBasicProvider dbm
    AuthDBMUserFile /****/userDatabase.db
    AuthDBMType db
    AuthDBMGroupFile /****/userDatabase.db
    AuthzDBMType db

    SSLRequireSSL
</Location>

ここまでは、すべてが正常に機能し、人々はそれぞれのグループに従ってアクセスできるようになります。いいえ、特定のユーザーを追加して、グループを変更せずに 1 つのリポジトリに (読み取り専用で) アクセスできるようにする必要があります。私は次のことを試しました

<Location /svn/administration>
    DAV svn
    SVNPath /data/svn/administration

    SVNPathAuthz off

    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require group svn-admin-readwrite
   </LimitExcept>

    <Limit GET PROPFIND OPTIONS REPORT>
        Require group svn-admin-read
        Require user testUser testUser2
    </Limit>
</Location>

モジュール「authn_dbm」と「authz_user」が有効になっています。ここに欠けているものはありますか?どんな助けでも大歓迎です!

4

1 に答える 1

1

ここに欠けているものはありますか?

SVNブックのいくつかの部分を読んで(そして理解して)、少なくとも「ディレクトリごとのアクセス制御」(おそらく「httpd、Apache HTTPサーバー」の全章)と「パスベースの認証」

現在の構成に少なくとも 2 つの弱点が見られます

  • DAV svnコンテナに+SVNParentPathがない<Location /svn>場合は、N リポジトリに対して N+1Locationコンテナが必要であり、追加|削除されたリポジトリごとに場所を追加|削除する必要があります。Subversion-way は、repository-dirs の親の単一の場所を持つことです

たとえば、http://my.server.com/svn/repos1、http://my.serverなどの URL を介してアクセスされるディレクトリ /var/svn に複数の Subversion リポジトリを作成することがわかっている場合。 com/svn/repos2など、次の例で httpd.conf 構成構文を使用できます。

<Location /svn>
  DAV svn

  # Automatically map any "/svn/foo" URL to repository /var/svn/foo
  SVNParentPath /var/svn
</Location>

この構文を使用すると、Apache は、パス部分が /svn/ で始まるすべての URL の処理を​​ Subversion DAV プロバイダーに委譲します。Subversion DAV プロバイダーは、SVNParentPath ディレクティブで指定されたディレクトリ内のすべてのアイテムが実際には Subversion リポジトリであると想定します。これは、SVNPath ディレクティブの使用とは異なり、ホストされたリポジトリを追加または削除するために Apache を再起動する必要がないという点で、特に便利な構文です。

  • Apache の Subversion のパスベース ACL はauthz_svn_module、AuthzSVNAccessFile とともに実装 (および 99% のケースで使用) され、ユーザーおよびグループのアクセス権 (ツリー内の任意のリポジトリまたはリポジトリ ツリーの一部) が定義されています... およびグループのメンバーシップも、これにより、AuthDBMGroupFile が廃止されます (および、LimitExcept と Limit を使用しない Location - よりコンパクトで読みやすくなります)。
于 2013-09-17T01:26:49.320 に答える