davsvnauthzを使用したSVN権限の設定

davsvnauthzを使用したSVN権限の設定

アクセス制限について混乱させるパス継承の問題があるようです。たとえば、rwグループ/ユーザーにアクセスを許可し、それを/../../secret無制限に制限したい場合は、すぐに私に唾を吐きます。

以下は、dav_svn.authzで達成したいタスクの例です。

[groups]
grp_W = a, b, c, g
grp_X = a, d, f, e
grp_Y = a, e,

[/]
* = 
@grp_Y = rw

[somerepo1:/projectPot]
@grp_W = rw

[somerepo2:/projectKettle]
@grp_X = rw

予想:すべてのリポジトリに同時にgrp_Yアクセスし、そのリポジトリにのみアクセスできます。rwgrp_Wgrp_X

何が起こるか:grp_Yすべてのリポジトリにアクセスできますが、grp_W何もgrp_X アクセスできません。

アクセス順序を反転してすべての人にアクセス権を付与し、各リポジトリでこれを制限すると、期限切れのルールをすぐに無視(権限の削除)し、すべての人にルートレベルで付与されたアクセス権を付与します。

ユーザー固有の条項と同じことを行うグループを破棄してください。たとえば、次のようになります。

[/]
a = rw
b = 
c = 
d = 
e =
f = 
g = rw

[somerepo1:/projectPot]
a = rw
b = rw
c = rw
d =
e = rw
f =
g = rw

[somerepo2:/projectKettle]
a = rw
b
c
d = rw
e = rw
f = rw
g

これは同じ結果をもたらします。 ~によると文書私はすべてのプロトコルに従うので、これは不可能なことです。

dav_svnを使用してApache2で実行

ベストアンサー1

一連の頭が痛い日の終わりに、私はこれを* = rw使わずに残しましたSVNParentPath。振り返ってみると、突然読み順が問題だったという感じがしました。

まず、私の例の命名規則は完全に間違っています[<repo_name>:<path-in-repo>]。私の実際のルールは正しいので、構文は根本的な原因ではありません。

主な問題は、authzファイルが最初の読み取り規則または使用可能な一致の「特定性」順序を適用する必要があることです。私が考える限り、すべてがルートと完全に一致するでしょう。したがって、例の順序を逆にすると、次のようになります。

[groups]
grp_W = a, b, c, g
grp_X = a, d, f, e
grp_Y = a, e,

[ProjectPot:/]
@grp_W = rw

[ProjectKettle:/]
@grp_X = rw

[/]
* = 
@grp_Y = rw

それに応じて受け入れられ、実装されます。これは行動です。録音されない私の考えでは、これは些細なことによる巨大な混乱です。

おすすめ記事