3

MySQL データベースを使用して従業員を認証するクライアント用の Subversion サーバーと、他のユーザー (ベンダー) をリポジトリに認証するための AuthUserFile (htpasswd) があります。

従業員にはフル アクセスを許可* = rwし、ベンダーにはサブツリーのみにアクセスを許可する必要があります。(このようなもの):

[/]
* = rw   #employees
vendor_user = 

[/sub-repo]
vendor_user = rw

残念ながら、SVN 認証の設計は、次の* = rwようなより制限的なルールにもかかわらず、すべてにカスケードしているようです 。vendor_user =

誰かアドバイスがあれば、私は深く感謝します!

4

2 に答える 2

2

グループは間違いなく進むべき道ですが、まだ問題があります. ユーザーがルート フォルダーを表示できない場合、表示したいサブフォルダーにアクセスできません。

このため、トップレベルに最小限の意味のあるフォルダーを使用してレポを構成します。

trunk/
    client/
    services/
    api/

次に、ブランケット読み取りアクセスを使用してアクセス許可を設定します。つまり、次のようになります。

[groups]
core = user1, user2, user3
client = user4

[repo:/]
* = r

[repo:/trunk/client]
@core = rw
@client = rw

[repo:/trunk/services]
@core = rw
@client =

[repo:/trunk/api]
@core = rw
@client = r

Jared の言うとおり、これにはリスクがあり、ユーザーがファイルをドロップしてはいけない場所にドロップしないように注意する必要があります (ファイルを削除するのは面倒なので、一般的にコア ユーザーにも読み取り専用を使用しています)。リポジトリを慎重に設定する (たとえば、トランクのトップレベル構造をブランチの下にミラーリングして、authz ファイルをシンプルに保つ)、これは仕事を行う効果的な方法です。

于 2012-11-30T00:48:08.883 に答える
2

これが可能だとは思いませんが、仮にできたとしても、このようなことをお勧めするとは言えません。セキュリティの観点から、一括読み取り/書き込みアクセスを許可してから、選択的にアクセス許可を削除することは非常に危険です。たとえば、新しく追加されたベンダーから権限を削除するのを忘れた場合はどうなるでしょうか?

おそらく、「従業員」グループを定義できます。

[groups]
employees = user1,user2,user3

次に、次のように移動できます。

[/]
@employees = rw
vendor_user =

また、リストを生成/維持するスクリプトを作成することをお勧めします。すべてのユーザーがデータベースにリストされているため、スクリプトでデータベースにクエリを実行し、必要に応じて新しいアクセス リストを生成できます。

于 2011-08-11T08:37:55.603 に答える