Eu tenho vários repositórios de subversão que são servidos através do Apache 2.2 e WebDAV. Eles estão todos localizados em um local central, e eu usei este artigo debian-administration.org como base (deixei de lado o uso da autenticação do banco de dados para um arquivo htpasswd simples).
Desde então, eu também comecei a usar o WebSVN . Meu problema é que nem todos os usuários no sistema devem poder acessar os diferentes repositórios, e a configuração padrão do WebSVN é permitir que qualquer pessoa possa se autenticar.
De acordo com a documentação do WebSVN, a melhor maneira de contornar isso é usar o sistema de acesso ao caminho do subversion, então procurei criá-lo usando a diretiva AuthzSVNAccessFile.
Quando faço isso, continuo recebendo mensagens "403 Proibidas".
Meus arquivos têm a seguinte aparência:
Eu tenho configurações de diretiva padrão em um arquivo:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Cada repositório obtém um arquivo de políticas como abaixo:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
O arquivo default_auth.conf contém este:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Não sei ao certo por que preciso do segundo SVNParentPath no default_auth.conf, mas acabei de adicionar isso hoje, pois estava recebendo mensagens de erro como resultado da adição da diretiva AuthzSVNAccessFile.
Com um arquivo de acesso totalmente permissivo
[/]
joebloggs = rw
o sistema funcionou bem (e era essencialmente inalterado), mas assim que comecei a tentar adicionar qualquer tipo de restrição, como
[sysadmin:/]
joebloggs = rw
em vez disso, recebo os erros 'Permissão negada' novamente. As entradas do arquivo de log são:
[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
O que preciso fazer para que isso funcione? O apache foi configurado incorretamente ou o meu entendimento do arquivo svnaccess.conf está incorreto?
Se estou fazendo isso da maneira errada, não tenho nenhum apego particular à minha abordagem geral; portanto, fique à vontade para oferecer alternativas também.
ATUALIZAÇÃO (20090528-1600):
Tentei implementar esta resposta , mas ainda não consigo fazer o trabalho corretamente.
Eu sei que a maioria das configurações está correta, como adicionei
[/]
joebloggs = rw
no início e 'joebloggs', então, tem todo o acesso correto.
Quando tento ir específico do repositório, fazer algo como
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
então recebi um erro de permissão negada para mickmurphy (joebloggs ainda funciona), com um erro semelhante ao que eu já tinha anteriormente
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Além disso, esqueci de explicar anteriormente que todos os meus repositórios estão por baixo
/var/lib/svn/repository
ATUALIZAÇÃO (20090529-1245):
Ainda não tivemos sorte em fazer isso funcionar, mas todos os sinais parecem estar apontando para o problema de o controle de acesso ao caminho no subversion não estar funcionando corretamente. Minha suposição é que eu não configurei o apache ou svn para reconhecer corretamente minha estrutura de repositório.
Isso ocorre porque a entrada '[/]' parece funcionar perfeitamente.
Também me ocorre que essa é uma pergunta que pode pertencer melhor ao StackOverflow?
ATUALIZAÇÃO (20090603-1740):
Em resposta a um dos comentários a esta pergunta, minha configuração do WebDAV para o subversion recebe o local / svn / repos, mas o websvn está definido como / websvn.