Eu tenho vários repositórios do subversion que são servidos através do Apache 2.2 e WebDAV. Eles estão todos localizados em um lugar central, e eu usei este artigo debian-administration.org como base (eu abandonou 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 do sistema podem 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 de caminho do subversion, então eu procurei criar isto, usando a diretiva AuthzSVNAccessFile.
Quando faço isso, continuo recebendo mensagens "403 Proibidas".
Meus arquivos parecem com os seguintes:
Eu tenho configurações de política 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ítica 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 isto:
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 em 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 foi essencialmente inalterado), mas assim que eu começo a tentar adicionar qualquer tipo de restrição, como
[sysadmin:/]
joebloggs = rw
em vez disso, recebo novamente os erros "Permissão negada". 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? Configurou o apache errado ou o meu entendimento do arquivo svnaccess.conf está incorreto?
Se eu estou indo sobre isso da maneira errada, eu não tenho nenhum apego especial à minha abordagem geral, então sinta-se à vontade para oferecer alternativas também.
UPDATE (20090528-1600):
Eu tentei implementar esta resposta , mas ainda não consigo fazê-lo funcionar corretamente.
Eu sei que a maior parte da configuração está correta, como eu adicionei
[/]
joebloggs = rw
no começo e 'joebloggs' então tem todo o acesso correto.
Quando eu tento ir embora específico do repositório, fazendo algo como
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
então recebi um erro de permissão negada para o 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 abaixo
/var/lib/svn/repository
UPDATE (20090529-1245):
Ainda não há sorte em fazer isso funcionar, mas todos os sinais parecem estar apontando para o problema, pois o controle de acesso ao caminho na subversão não está funcionando corretamente. Minha suposição é que eu não configurei o apache ou o svn para reconhecer corretamente minha estrutura de repositório.
Isso ocorre porque a entrada '[/]' parece funcionar perfeitamente.
Também me ocorre que esta é uma questão que pode pertencer melhor ao StackOverflow?
UPDATE (20090603-1740):
Em resposta a um dos comentários para esta questão, minha configuração do WebDAV para o subversion em si recebe a localização / svn / repos , mas o websvn está configurado para / websvn.