A listagem pai SVN retorna 403 ao usar authz

3

Eu tenho um svn configurado em svn.example.com

Eu tenho o SVNParentPath configurado para listar todos os repositórios em um diretório.

Quando eu habilito meu AuthzSVNAccessFile, a página de listagem retorna um 403 enquanto eu posso acessar corretamente o repos diretamente no svn.example.com/repo name.

Conf do Apache:

<VirtualHost *:80>
        ServerName svn.example.com

        DocumentRoot /var/www/svn

        <Location />
                DAV svn
                AuthType Basic
                AuthName "svn.example.com"
                AuthUserFile /etc/apache2/svn/users.passwd
                AuthzSVNAccessFile /etc/apache2/svn/authz
                SVNParentPath /var/svn
                SVNListParentPath on

                Require valid-user
        </Location>

</VirtualHost>

Arquivo Authz:

[groups]
admin = user1. user2, user3

[/]
@admin = rw

Aqui está o que eu vejo no log de erros;

The URI does not contain the name of a repository.  [403, #190001]
Could not fetch resource information.  [500, #0]
Could not open the requested SVN filesystem  [500, #2]
Could not open the requested SVN filesystem  [500, #2]

Log de acesso

svn.example.com:80 *myIP* - user1 [18/Nov/2010:13:56:53 +0000] "GET / HTTP/1.1" 403 274 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7"
    
por Simon 18.11.2010 / 13:22

5 respostas

2

... você já tentou um <Location /svn/> - com slah final! lá: link as pessoas parecem ter resolvido o problema para o 'caso não raiz-dir'.

... então, pelo menos, você sabe onde procurar mais (mod-rewrite ...?).

    
por 26.11.2010 / 13:42
2

Em uma revisão mais aprofundada, eu respondo pela segunda vez. Consegui remover o problema com o SVN 1.6.13 adicionando uma barra final e um apelido sem a barra como o artigo sugere.

Resposta anterior:

Encontrei uma resposta para isso no StackOverflow, em link , e afirma para adicionar:

SVNListParentPath On

Isso corresponde ao que está no link , onde ele afirma:

SVNListParentPath On|Off

When set to On, allows a GET of SVNParentPath, which results in a listing of all repositories under that path. The default setting is Off.

Isso deve corrigir o problema 403.

    
por 24.11.2010 / 02:32
0
AuthzSVNAnonymous On
AuthzSVNNoAuthWhenAnonymousAllowed On
Satisfy Any

Primeiramente você precisa da diretiva Satisfy Any , e também precisará das linhas Anônimas se estiver executando um repositório open / auth combinado (por exemplo, algumas áreas que contêm código-fonte aberto, alguma fonte fechada).

Como escrevi aqui na atualização: link

Verifique se o caminho SVNParentPath / var / svn existe em / var / svn e é acessível e gravável pelo uso do apache. É possível que você tenha a propriedade root: root chown -R apache:apache /var/svn

    
por 18.11.2010 / 14:30
0

Estou tendo o mesmo problema, hospedando o Subversion em seu próprio subdomínio. Parece que precisa haver uma configuração como [], mas isso parece apenas causar um erro silencioso, tornando o arquivo totalmente ignorado. Aqui está o resumo de uma solução que não consigo trabalhar, mas posso dar algumas ideias:

  1. Redirecionar / para / indexar / (ou o que for mais adequado ao seu gosto)
  2. Duplique a seção <location /> e renomeie a primeira para <location /index/> section
  3. Adicione uma regra de reescrita correspondente / index / * para redirecionar para / $ 1
  4. Adicione uma seção [/ index /] ao arquivo authz

Passei alguns minutos tentando, mas não tive muita sorte. Vou atualizar essa resposta se encontrar uma maneira de fazer esse trabalho ou uma solução melhor.

    
por 13.12.2010 / 03:26
0

Eu tive o mesmo problema e encontrei a seguinte solução alternativa. A idéia principal é não aplicar "AuthzSVNAccessFile" à raiz, mas aplicar para o resto. Funciona para mim no apache2.2 (Ubuntu Server 12.04).

<VirtualHost *:80>
    ...
    <Location />
        ...
    </Location>
    <Location /.+>
        AuthzSVNAccessFile /path/to/the/access/file
    </Location>
</VirtualHost>

Atualizar (configuração completa):

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName svn.company.lan
    <Location />
        # Enable Subversion
        DAV svn

        # Directory containing all repository for this path
        SVNListParentPath on
        SVNParentPath /opt/subversion

        # LDAP Authentication & Authorization is final; do not check other databases
        AuthzLDAPAuthoritative on
        AuthBasicProvider ldap

        # Do basic password authentication in the clear
        AuthType Basic

        # The name of the protected area or "realm"
        AuthName "Subversion Repository"

        # The LDAP query URL
        # Format: scheme://host:port/basedn?attribute?scope?filter
        # The URL below will search for all objects recursively below the basedn 
        # and validate against the sAMAccountName attribute
        AuthLDAPURL "ldap://dc1.company.com/dc=serv,dc=company,dc=com?sAMAccountName?sub"
        AuthLDAPBindDN "CN=svn1user,OU=ou1,DC=company,DC=com"
        AuthLDAPBindPassword "PASS"

        # Require authentication for this Location
        Require valid-user
    </Location>

    # <LocationMatch /.+> is a really dirty trick to make listing of repositories work (http://d.hatena.ne.jp/shimonoakio/20080130/1201686016)
    <LocationMatch /.+>
        AuthzSVNAccessFile /opt/subversion/subversion.perm
    </LocationMatch>
</VirtualHost>
    
por 12.01.2013 / 09:16