Eu tenho um novo repositório em um servidor subversion existente que requer que realizemos uma autorização baseada em caminho dentro do repositório. Descobri que a diretiva AuthzSVNAccessFile no apache é diretamente responsável por permitir essa funcionalidade. Depois de corrigir vários outros problemas, como o AuthzSVNAccessFile, impedindo que o SVNListParentPath funcione corretamente, fico com um único problema. Posso fazer o checkout, posso atualizar, posso confirmar, MAS não consigo executar um SVN COPY para executar operações de ramificação / marcação. No momento em que eu comento a linha AuthzSVNAccessFile na configuração do Apache, tudo funciona como esperado, exceto as autorizações óbvias de caminho.
Versões:
- O sistema operacional do servidor é Debian 6.0.7 (Squeeze)
- Apache 2.2.16-6 + squeeze11
- Servidor Subversion 1.6.12dfsg-7
- Clientes estão executando janelas
- Os clientes testados são:
- TortoiseSVN 1.8.2 Construir 24708 64 bits
- SVN CLI Client 1.8.3 (r1516576)
A autenticação é realizada via AD para um domínio do Windows 2003 e parece estar funcionando normalmente. Eu removi todas as outras configurações e configurações de repositório para produzir essa configuração única que reproduz o problema.
Configuração do Apache:
<VirtualHost *:443>
ServerName svn-test.company.com
ServerAlias /svn-test
ServerAdmin [email protected]
SSLEngine On
SSLCertificateFile /etc/apache2/apache.pem
ErrorLog /var/log/apache2/svn-test_error.log
LogLevel warn
CustomLog /var/log/apache2/svn-test_access.log combined
ServerSignature On
# Repository Access to all Repositories
<Location "/">
DAV svn
SVNParentPath /var/svn
SVNListParentPath on
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative Off
AuthName "Subversion Test Repository System"
AuthLDAPURL "ldap://adserver.company.com:389/DC=corp,DC=company,DC=com?sAMAccountName?sub?(objectClass=*)" NONE
AuthLDAPBindDN "CN=service_account,OU=ServiceIDs,OU=corp,OU=Delegated,DC=na,DC=corp,DC=company,DC=com"
AuthLDAPBindPassword service_account_password
Require valid-user
SSLRequireSSL
</Location>
# <LocationMatch /.+> is a really dirty trick to make listing of repositories work
# http://d.hatena.ne.jp/shimonoakio/20080130/1201686016
<LocationMatch /.+>
AuthzSVNAccessFile /etc/apache2/svn_path_auth
</LocationMatch>
</VirtualHost>
Arquivo de acesso ao SVN:
[/]
* = rw
O repositório usado (AuthTestBasic) consiste na seguinte estrutura de diretórios e não contém externals (esta é uma listagem literal, não um exemplo):
/
/branches/
/tags/
/trunk/
/trunk/somefile.txt
Tartaruga produz o seguinte erro durante uma operação de tag na janela de resultados da tag:
Adding directory failed: COPY on /authtestbasic/!svn/bc/2/trunk (400 Bad Request)
O cliente CLI svn.exe produz o seguinte erro:
C:\Users\e20epkt>svn copy https://servername/authtestbasic/trunk https://servername/authtestbasic/tags/tag1 -m "svn cli client"
svn: E175002: Adding directory failed: COPY on /authtestbasic/!svn/bc/2/trunk (400 Bad Request)
O log de erros do Apache não tem nada, mas o log de acesso do Apache tem o seguinte (endereços IP e nomes de usuários alterados obviamente):
10.1.2.100 - - [17/Oct/2013:11:53:40 -0700] "OPTIONS /authtestbasic/trunk HTTP/1.1" 401 2595 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "OPTIONS /authtestbasic/trunk HTTP/1.1" 200 996 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "OPTIONS /authtestbasic/trunk HTTP/1.1" 200 884 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPFIND /authtestbasic/trunk HTTP/1.1" 207 692 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPFIND /authtestbasic/!svn/vcc/default HTTP/1.1" 207 596 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "REPORT /authtestbasic/!svn/bc/0/trunk HTTP/1.1" 404 580 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPFIND /authtestbasic/!svn/vcc/default HTTP/1.1" 207 596 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "REPORT /authtestbasic/!svn/bc/2/trunk HTTP/1.1" 200 674 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPFIND /authtestbasic/!svn/bc/2/trunk HTTP/1.1" 207 548 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPFIND /authtestbasic/tags/tag1 HTTP/1.1" 404 580 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "MKACTIVITY /authtestbasic/!svn/act/f1e9dc07-fb5e-5a41-ac22-907705ef6e5e HTTP/1.1" 201 708 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPFIND /authtestbasic/tags HTTP/1.1" 207 580 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "CHECKOUT /authtestbasic/!svn/vcc/default HTTP/1.1" 201 708 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "PROPPATCH /authtestbasic/!svn/wbl/f1e9dc07-fb5e-5a41-ac22-907705ef6e5e/2 HTTP/1.1" 207 596 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "CHECKOUT /authtestbasic/!svn/ver/1/tags HTTP/1.1" 201 724 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "COPY /authtestbasic/!svn/bc/2/trunk HTTP/1.1" 400 596 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
10.1.2.100 - myuseraccount [17/Oct/2013:11:53:40 -0700] "DELETE /authtestbasic/!svn/act/f1e9dc07-fb5e-5a41-ac22-907705ef6e5e HTTP/1.1" 204 1956 "-" "SVN/1.8.3 (x64-microsoft-windows) serf/1.3.1 TortoiseSVN-1.8.2.24708"
Você verá que a segunda à última linha contém o comando COPY com a resposta HTTP 400, no entanto, não parece haver nenhuma indicação do motivo.
Por favor, note que, embora sim, este é um repositório de teste em um servidor de teste, estou tendo este mesmo problema nesta configuração de teste, onde eliminei todas as outras possíveis causas (configurações mistas de repositórios, externos, etc). Eu também confirmei que todos os arquivos para o repositório (/ var / svn / authtestbasic) são de propriedade do usuário do Apache www-data.