2011-08-10 10 views
3

MySQLデータベースを使用して従業員を認証するクライアント用のSubversionサーバーと、他のユーザー(ベンダー)をそのリポジトリに認証するAuthUserFile(htpasswd)があります。Subversion Authz - 1つを除くすべてのユーザーにフルアクセス

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

[/] 
* = rw #employees 
vendor_user = 

[/sub-repo] 
vendor_user = rw 

残念ながらSVNの認証のデザインは、誰もがアドバイスを持っている場合、私は深く感謝でしょうvendor_user =

のような、より制限のルールにもかかわらず、すべてのものまで* = rwをカスケード接続するようです!

答えて

2

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

おそらく、あなたは、「従業員」グループを定義することができます。

[groups] 
employees = user1,user2,user3 

次に、あなただけの行くことができます:

[/] 
@employees = rw 
vendor_user = 

も:それはおそらく生成するスクリプトを記述することをお勧めだろう/維持リスト。すべてのユーザーがデータベースにリストされているので、スクリプトにデータベースを照会させ、必要に応じて新しいアクセスリストを生成することができます。

+0

アドバイスをいただきありがとうございます。これらをグループとして実装する方法をスクリプト化する方がなぜいいのか理解できます。 – Excalibur

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 

ジャレッドされますこれにはリスクがあることを訂正し、ユーザーがファイルを削除しないように注意する必要があります(ファイルを削除することは苦痛です。したがって、一般的にはコアユーザーに対しても読み取りのみを使用します)。ただし、レポを慎重に(例えばトランクトップを鏡映するauthzファイルをシンプルに保つために、ブランチの下のレベルの構造)、これはジョブを実行する有効な方法です。

関連する問題