Apache-2.2

使用 Dav SVN Authz 設置 SVN 權限

  • November 7, 2014

似乎有一個路徑繼承問題讓我對訪問限制感到困惑。例如,如果我授予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可以rw訪問所有儲存庫,同時grp_W並且grp_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 上執行

經過一堆頭痛之後,我讓這個閒置* = rwSVNParentPath水平。回過頭來,我突然有一種明顯的打擊。閱讀順序是問題所在。

首先,我的命名約定完全是錯誤的 [<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

會使其被接受並按行為表現。這沒有記錄在案,在我看來,這是對完全微不足道的事情的嚴重混亂。

引用自:https://serverfault.com/questions/221739