クイックバックグラウンド。 WebアクセスのないWindowsボックスでSubversionServer 1.6.5(ApacheはなくSVNサーバーのみ)を実行しています。 TortoiseSVNとAnkhSVNのみを使用し、継続的インテグレーションにはsvnclientコマンドラインを使用します。
さて、私はNETを見て回って、SVNの本を少し読みましたが、このユーザー設定が機能しない理由がわかりません。
authz(SVN認証ファイル)の内容:
### Sanitized version
[groups]
devUsers = user1
qaUsers = user2
[/]
@devUsers = r
@qaUsers = r
[/Dev/SourceCode]
@devUsers = rw
~devUsers =
### QA Projects
[/Dev/testCases]
@qaUsers = rw
~qaUsers =
私が読んだことから、リポジトリのルートへの少なくとも読み取りアクセスをすべてのユーザーに許可する必要があります。いいよ。それはうまくいきます。次の/ Dev/SourceCodeディレクトリは@devUsersのみがアクセスできるはずですが、何らかの理由でTortoiseSVNのリポジトリブラウザで@qaUsers
がこのフォルダを見ることができます。 /
のグローバル読み取りアクセスがauthzファイルの~devUsers =
行をオーバーライドしていると思いますか?また、@qaUsers
にのみアクセスできる必要がある/ Dev/TestCasesフォルダーについても同じことが言えますが、@devUsers
はこのフォルダーも表示できます。それが私の問題の1つです。
ただし、主な問題は、/ Dev/SourceCodeのサブフォルダーが読み取り専用であるということです。サブフォルダーに何かをチェックインしようとすると、認証に失敗したと表示されるため、これを知っています。ただし、ルートフォルダーでは、ファイルをチェックインすると正常に機能します。
これは/
読み取り専用アクセスであると私は推測しています。これは、各サブフォルダーに明示的なrwアクセス許可を付与する必要があることを意味しますか?とにかく、この時点から、現在の親フォルダーのアクセス許可、つまり/ Dev/SourceCodeのアクセス許可を使用することについて言うことはありますか?多くのサブフォルダーがあるときにすべてのサブフォルダーにrwアクセス許可を付与する場合、これは本当に不便に思えます。
認証ファイルを見たときの最初の考えは、「パス宣言にリポジトリ名がないのではないか」というものでした。
つまり、
[/Dev/SourceCode]
@devUsers = rw
@qaUsers =
次のようになります、
[<repo-name>:/Dev/SourceCode]
@devUsers = rw
@qaUsers =
または、 `Dev 'がリポジトリの名前である場合、
[Dev:/SourceCode]
@devUsers = rw
@qaUsers =
リポジトリにApacheを使用していますが、構文はhttpdでもsvnserveでも同じように見えます。 パスベースの承認
これがお役に立てば幸いです。
ありがとうございました、
ザカリー
権限のカスケードは期待どおりに機能するはずです。すべてのディレクトリに権限は必要ありません。あなたがしているように、あなたは親からの許可を上書きするためにもっと具体的なパスを指定する必要があるだけです。
私は~groupname
構文に精通していません。あなたは明らかに否定(グループに属していないユーザー)を意味することを意図していますが、それがサポートされているかどうかはわかりません。次のようなものを試してください(グループ定義とルートアクセスの最初の2つのセクションは同じです):
[/Dev/SourceCode]
@devUsers = rw
@qaUsers =
[/Dev/testCases]
@qaUsers = rw
@devUsers =
これは機能するはずですが、開発者がテストケースにアクセスすることを拒否すると、私は悲しくなります。
編集:あなたはこれを試しましたが、うまくいきません...多分順序を逆にしてみてください?マッチングは最も具体的なものから最も具体的でないものへと行われることになっているので、順序は重要ではありませんが、少なくともこれらを[/]権限よりも早くファイルに入れてみます。それが違いを生むなら、私はあなたのサーバーバージョンのバグを疑うでしょう。
私の他の答えから完全に別のアイデア:
... [/ Dev/testCases]の定義にタイプミス(ケースなど)がないことを確認しますか? (あなたはWindowsを使用しています:たとえば、実際に「DEV」という名前の場合、Windowsは「Dev」として表示することを知っています...しかしSVNはおそらく気にします)
...また、[/ trunk/Dev/testCases]などではないはずですか?