Definindo as permissões do SVN com Dav SVN Authz

2

Parece haver um problema de herança de caminho que está me incomodando com restrições de acesso. Por exemplo, se eu concedo a rw acessar um grupo / usuário e desejar restringir um pouco de /../../secret a nenhum, ele imediatamente aparece na minha cara.

Aqui está um exemplo do que estou tentando alcançar em 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

O que é esperado: grp_Y tem rw acesso a todos os repositórios, enquanto grp_W e grp_X têm acesso somente aos seus respectivos repositórios.

O que ocorre: grp_Y tem acesso a todos os repositórios, enquanto grp_W e grp_X têm acesso a nada

Se eu inverter a ordem de acesso para a qual eu concedo acesso a todos e restringi-la em cada repositório, ela ignorará a regra de invalidação (remoção de direitos) e concederá a todos o acesso concedido no nível raiz.

Formando grupos, executa o mesmo com disposições específicas do usuário; mesmo totalmente definido como:

[/]
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

Que produz o mesmo resultado exato. De acordo com a documentação estou acompanhando tudo protocolos para que isso seja insano.

Executando no Apache2 com dav_svn

    
por StudentKen 12.01.2011 / 20:51

3 respostas

3

Depois de várias dores de cabeça, deixo isso ocioso com * = rw at SVNParentPath level. Voltando a isso, de repente tive um golpe de óbvio me atingido; a ordem de leitura foi o problema.

Em primeiro lugar, minhas convenções de nomenclatura estavam erradas, como deveria ser [<repo_name>:<path-in-repo>]

O principal problema é que o arquivo authz espera uma ordem de 'especificidade' onde a primeira regra de leitura ou a correspondência disponível é aplicada. No meu caso, tudo combinaria com a raiz e seria um e feito. assim, invertendo meu exemplo:

[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

faria com que fosse aceito e funcionasse como se comportasse. Isso NÃO É DOCUMENTADO e, na minha opinião, é um problema sério sobre algo totalmente trivial.

    
por 17.01.2011 / 06:29
0

Eu encontrei a mesma coisa há pouco tempo e também não consegui encontrar uma solução. Algumas regras de alias baratas do apache e / ou svn: external definitions podem ajudar, mas se ficarem moderadamente complicadas, acho que você não pode fazer isso hoje. O WANdisco teve vários pedidos para este recurso e pode obter impulso suficiente para merecer um authz aprimorado com acesso não herdado e suporte a expressões regulares.

    
por 13.01.2011 / 02:31
0

Você precisa fornecer uma URL completa para acessar o repositório que tenha permissão para obter permissão de leitura como essa.

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

[/]
* = 
@grp_Y = rw
@grp_w = r
@grp_x = r
[somerepo1:/projectPot]
@grp_W = rw

[somerepo2:/projectKettle]
@grp_X = rw
    
por 07.11.2014 / 04:32