Evitar verificação de senha para leitura de um único arquivo (Apache + dav_svn)

2

Eu tenho um repositório Subversion de arquivos privados, servido pelo Apache sobre HTTPS usando dav_svn . Gostaria de dar aos usuários em um único domínio acesso de leitura a um único arquivo desse repositório usando HTTP. Como eu escrevo tal substituição? A configuração atual:

<Location /svn>
  DAV svn
  SVNParentPath /var/lib/svn

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>
    
por l0b0 07.09.2009 / 17:38

3 respostas

1

Isso parece um antigo, mas apareceu no feed RSS, então ...

Se eu entendi a pergunta corretamente, você deseja substituir a autenticação apenas para um arquivo.

<Location /svn>
  DAV svn
  SVNParentPath /var/lib/svn

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>

<Files /path/to/file>
  DAV svn
  SVNParentPath /var/lib/svn

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  Require valid-user
  Allow from .some.domain.com # A domain name (requires the slow hostname lookups)
  Allow from 192.168.10.0/24 # An IP subnet
  Satisfy any    
</Files>

Como disse katriel , a utilização da diretiva Satisfy permite que você especifique permissão alternativa. Usar isso na diretiva Files restringe as substituições a arquivos específicos. Isso não permitirá confirmações, pois apenas um arquivo tem acesso sem autenticação. Você sempre pode se certificar com um gancho pre-commit ou start-commit.

    
por 18.02.2010 / 22:19
0

Eu não acho que seja uma boa idéia expor um repositório a commits anônimos sob qualquer circunstância. Você pode tentar uma configuração mais elaborada, usando um gancho post-commit para executar uma atualização e expor esse diretório por meio de um alias com acesso somente leitura para uma sub-rede ou domínio específico:

por exemplo. em / var / lib / svn / repos / hooks / post-commit:

#!/bin/sh
# Of course, the update directory should be checked out the first time
cd /var/www/repomirror
svn update

E no seu httpd.conf

<Location /repomirror>
    Order Deny,Allow
    Deny from all
    Allow from apache.org 
</Location>

YMMV

    
por 08.10.2009 / 19:32
0

Você pode tentar usar a autenticação e permitir o controle de acesso baseado em negação no mesmo diretório. O uso de "Satisfazer" você pode "ou" os dois. Usando o arquivo authz, você pode permitir acesso somente leitura em um determinado caminho no repositório Será algo parecido com:

<Location /svn>
  DAV svn
  SVNParentPath /var/lib/svn

  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  Require valid-user
  Order Allow,Deny
  Allow from .some.domain.com
  Satisfy any

 </Location>

e no arquivo authz use

[repo:/public/dir]
* = r
@writers = rw

Esta não é uma solução perfeita, mas não há outra maneira real de excluir um domínio da autenticação

    
por 07.09.2009 / 19:56