0

Windows 7 で実行されている svnserve 1.4 を使用しています。authz ファイルを使用してユーザー権限を制御したいと考えています。

ルート フォルダが読み取り保護されている間に、サブフォルダに「rw」権限を付与したいと考えています。大規模なリポジトリがあり、ファイルの限られたサブセットのみに「rw」権限を付与したいと考えています。他のフォルダはユーザーには見えません。

次の構成を使用すると、何も表示されません。

[/root]
group1 =
[/root/A/new/Data]
group1 = rw
[/root/C/Ex/Files]
group1 = rw

代わりに使用する場合:

[/]
group1 = rw

次に、すべてのフォルダーが「group1」に表示されますが、これは必要なものではありません。

別のオプションは、次のようなことです

[root/B]
group1 =
[root/c]
group1 =

group1 に不要なすべてのサブフォルダー。こんなことしなくてもいいのに。

4

2 に答える 2

1

ユーザーがフォルダへの読み取りアクセス権を持っていない場合、そのフォルダ内には何もアクセスできないことに注意してください。読み取りアクセス権がない場合、Subversion は、パーミッションをチェックする必要のあるファイルまたはフォルダーが内部にあるかどうかを知る方法がありません。読み取りアクセスを拒否すると、フォルダーとその中のすべてが再帰的に非表示になります。

このようなきめ細かなアクセス制御が必要な状況に陥った場合は、リポジトリのレイアウトを再評価することを強くお勧めします。あなたのようなネストされたリソース/root/root/A/new/Data非常に異なるアクセス許可を必要とする場合、リポジトリ内の関係は実際の関係を反映していない可能性があります。多くの場合、このようなものは、ネストされたフォルダーではなく、個別のプロジェクト (または個別のリポジトリ) に再編成されることになり、その結果、きめ細かなアクセス制御作業のほとんどが大幅に簡素化されます。

ビルド スクリプトなどを壊さずにリポジトリを再編成できない場合は、Subversion のsvn:externalsプロパティの使用を検討することをお勧めします。のコンテンツを/root/A/new/Data別のリポジトリに移動して、group1 に完全なアクセス権を与えることができます。次に、新しいリポジトリ パスを同じフォルダー名の下のフォルダーsvn:externalsにプルするために使用できます。これにより、アクセス権を持つユーザーは同じものを見ることができます。この種のワークフローは、サブフォルダーの内容が外部チームによって提供されるライブラリのようなものである場合に役立ちます。ライブラリ チームにライブラリ コードへのアクセス権を付与する必要がありますが (ライブラリのリポジトリに直接アクセスすることでアクセス権が付与されます)、コードの残りの部分にはアクセスする必要はありません。/root/rootsvn checkout

于 2012-08-09T16:56:41.357 に答える
1

Windows 7 で実行されている svnserve 1.4 を使用しています。

Subversion 1.4 はもはやサポートされていません。バージョン 1.7.x または 1.6.x にアップグレードすることをお勧めします。これらの新しいバージョンはマージ トラッキングをサポートしています。これは便利な機能です。既存のリポジトリのアップグレードは非常に簡単です。

他の人が指摘しているように、フォルダーを読み取る権限がない場合、そのフォルダーのサブフォルダーを読み取る権限がありません。親フォルダーに読み取り専用のアクセス許可を設定できますが、読み取りを取り除くと、読み取り/書き込みアクセス許可を付与するサブフォルダーがユーザーに表示されなくなります。

リポジトリのレイアウトを再考することをお勧めします。リポジトリへの読み取りアクセス権を特定のユーザーに付与することは珍しくありません。たとえば、営業担当者にソース コードを読ませたくないが、開発者には読ませたい場合があります。私のいつものやり方は、リポジトリごとに読み取り/書き込み許可を付与してから、コミット前のフックを使用してコミット機能を制御することです。ディレクトリには、すべての開発者に見せたくないもの (秘密鍵など) が含まれていることがありますが、それは開発者の小さなサブセットだけが見る必要があります。その場合は、別のリポジトリにします。


すべての希望が失われるわけではありません。group1 がアクセスするディレクトリを、リポジトリのルートに近い別のディレクトリ構造に配置できます。次にsvn:externals、group1 のユーザーに見せたくないディレクトリを使用します。

たとえば、リポジトリを次のように設定します。

[/root]
group1=

[/A/new/Data]
group1=rw

[C/Ex/Files]
group1=rw

次に、チェックアウト時に含むオンのセットを入れsvn:externalsます。/rootA/new/DataC/Ex/Files/root

WORD 'O WARNING : を使用するときは注意してくださいsvn:externals。枝や幹の先端に向けるsvn:externalとタグ付けしても変化します/root。を使用するときは、必ず特定のリビジョンを使用してsvn:externalsください。

于 2012-08-09T17:48:15.603 に答える