Eu tenho um único repositório SVN em / var / svn / com alguns subdiretórios. A equipe deve ser capaz de acessar o diretório de nível superior e todos os subdiretórios dentro dele, mas eu quero restringir o acesso a subdiretórios usando arquivos htpasswd alternativos.
Isso funciona para nossa equipe.
<Location />
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthBasicProvider ldap
# mod_authnz_ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap.example.org:636/ou=people,ou=Unit,ou=Host,o=ldapsvc,dc=example,dc=org?uid?sub?(objectClass=PosixAccount)"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=staff,ou=PosixGroup,ou=Unit,ou=Host,o=ldapsvc,dc=example,dc=org
</Location>
Agora, estou tentando restringir o acesso a um subdiretório com um arquivo htpasswd separado, como este:
<Location /customerA>
DAV svn
SVNParentPath /var/svn
# mod_authn_file
AuthType Basic
AuthBasicProvider file
AuthUserFile /usr/local/etc/apache22/htpasswd.customerA
Require user customerA
</Location>
Eu posso usar o Firefox e curl para navegar até esta pasta:
curl https://svn.example.org/customerA/ --user customerA:password
Mas não posso usar o check-out deste repositório SVN:
$ svn co https://svn.example.org/customerA/
svn: Repository moved permanently to 'https://svn.example.org/customerA/'; please relocate
E nos registros do servidor, recebo este erro estranho:
# httpd-access.log
192.168.19.13 - - [03/May/2010:16:40:00 -0700] "OPTIONS /customerA HTTP/1.1" 401 401
192.168.19.13 - customerA [03/May/2010:16:40:00 -0700] "OPTIONS /customerA HTTP/1.1" 301 244
# httpd-error.log
[Mon May 03 16:40:00 2010] [error] [client 192.168.19.13] Could not fetch resource information. [301, #0]
[Mon May 03 16:40:00 2010] [error] [client 192.168.19.13] Requests for a collection must have a trailing slash on the URI. [301, #0]
Minhas perguntas:
- Posso restringir o acesso ao Subversion?
subdiretórios usando o acesso do Apache
controles? DocumentRoot é comentado
fora, por isso não está claro que o FAQ
a
link
aplica-se.
- Eu prefiro não usar o AuthzSVNAccessFile, porque ele não suporta grupos LDAP. Controlamos o acesso usando o LDAP e fazemos uso intenso de grupos LDAP.