액세스 제한에 대해 혼란스럽게 만드는 경로 상속 문제가 있는 것 같습니다. 예를 들어, 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에서 실행
답변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
이에 따라 수락되고 구현됩니다. 이건 행동이야녹음되지 않음제 생각에는 이것은 사소한 일로 인한 엄청난 혼란입니다.