trac ignora as configurações de autorização do svn

2

Estou usando o VirtualSVN + Trac-plugin no Windows para multi-projetos. Eu configurei usuários e grupos no VirtualSVN, para que somente usuários / grupos autorizados possam acessar o recurso especificado.

Por exemplo:

  1. Customer1 pode acessar o Repository1 e o Trac1
  2. O Customer2 pode acessar o Repository2 e o Trac2
  3. O anônimo não pode acessar nenhum repositório svn.

No meu sistema, assim que o Customer2 estiver logado, ele poderá acessar o Repository2, o Trac2 , mas também o Trac1 . Isso não é o esperado.

A parte de configuração do apache para o svn

<Location /svn>
  DAV svn

  SVNListParentPath off
  SVNParentPath "D:/repos/svn"
  SVNPathAuthz on

  AuthName "Subversion Repositories"
  AuthType Basic
  AuthBasicProvider file
  AuthUserFile "D:/repos/svn/htpasswd"
  AuthzSVNAccessFile "D:/repos/svn/authz"

  require valid-user
</Location>

A parte de configuração do apache do Trac

LoadModule python_module "trac/python/mod_python_so.pyd"
LoadModule authz_user_module "bin/mod_authz_user.so"

<Location /trac>
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir "d:/repos/trac"
  PythonOption TracUriRoot /trac

  AuthName "Trac"
  AuthType Basic
  AuthBasicProvider file
  AuthUserFile "d:/repos/svn/htpasswd"

  Require valid-user
</Location>

Eu tentei declarar AuthzSVNAccessFile "D: / repos / svn / authz" para o Trac. Mas isso não funciona definitivamente.

Alguém pode me ajudar a fazer isso correto? Agradecemos antecipadamente.

    
por stanleyxu2005 21.07.2010 / 01:48

1 resposta

4

Esta questão pode ser dividida em duas partes:

1) Limitando a navegação svn source com o trac como dito pelo arquivo authz

Você precisa dizer ao trac onde está o arquivo authz.

Edite o arquivo trac.ini em d: /repos/trac/tracX/trac.ini:

[trac]
authz_file = D:/repos/svn/authz
authz_module_name = name_of_the_module_as_in_authz_file_for_this_trac

2) Limitando quem pode acessar qual trac.

Não tem nada a ver com o arquivo authz, já que o trac não o está usando para conceder permissões ao sistema trac.

Ao usar a autenticação básica, você tem duas opções:

a) Se você desistir de uma configuração com TracEnvParentDir e alterá-la para duas entradas de localização, poderá alterar a diretiva Require:

<Location /trac/trac1>
    [...]
    Require user Customer1
</Location>

<Location /trac/trac2>
    [...]
    Require user Customer2
</Location>

Embora seja pouco prático se você tiver mais trac.

b) Defina permissões adequadas dentro do trac. Todos os usuários poderão fazer o "login" em todo o trac, mas não poderão acessar nada.

Remova todas as permissões do usuário autenticado e conceda permissões a usuários adequados. Algo como:

trac-admin d:/repos/trac/trac1 permission remove authenticated *
trac-admin d:/repos/trac/trac2 permission remove authenticated *
trac-admin d:/repos/trac/trac1 permission add Customer1 TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY
trac-admin d:/repos/trac/trac2 permission add Customer2 TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY

Manter as permissões authz e trac em sincronia é um outro grande problema :) Seria melhor escrever alguns scripts personalizados que correspondam exatamente ao seu ambiente para adicionar e remover permissões se você for fazer muito isso.

    
por 21.07.2010 / 18:40