Ho più repository di sovversione che vengono offerti tramite Apache 2.2 e WebDAV. Sono tutti situati in una posizione centrale e ho usato questo articolo di debian-administration.org come base (ho abbandonato l'uso dell'autenticazione del database per un semplice file htpasswd).
Da allora, ho anche iniziato a utilizzare WebSVN . Il mio problema è che non tutti gli utenti del sistema dovrebbero essere in grado di accedere ai diversi repository e la configurazione predefinita di WebSVN è consentire a chiunque sia in grado di autenticarsi.
Secondo la documentazione WebSVN, il modo migliore per aggirare questo è usare il sistema di accesso al percorso di Subversion, quindi ho cercato di crearlo, usando la direttiva AuthzSVNAccessFile.
Quando lo faccio, continuo a ricevere messaggi "403 Proibiti".
I miei file sono simili ai seguenti:
Ho le impostazioni dei criteri predefinite in un file:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Ogni repository ottiene un file delle politiche come di seguito:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
Il file default_auth.conf contiene questo:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Non sono del tutto sicuro del motivo per cui ho bisogno del secondo SVNParentPath in default_auth.conf, ma l'ho appena aggiunto oggi mentre stavo ricevendo messaggi di errore a seguito dell'aggiunta della direttiva AuthzSVNAccessFile.
Con un file di accesso totalmente permissivo
[/]
joebloggs = rw
il sistema ha funzionato bene (ed era sostanzialmente invariato), ma non appena ho iniziato a provare ad aggiungere qualsiasi tipo di restrizione come
[sysadmin:/]
joebloggs = rw
invece, visualizzo nuovamente gli errori "Autorizzazione negata". Le voci del file di registro sono:
[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
Cosa devo fare per farlo funzionare? Apache configurato è sbagliato o la mia comprensione del file svnaccess.conf non è corretta?
Se sto andando in questo modo nel modo sbagliato, non ho un particolare attaccamento al mio approccio generale, quindi sentiti libero di offrire anche delle alternative.
AGGIORNAMENTO (20090528-1600):
Ho tentato di implementare questa risposta , ma non riesco ancora a farlo funzionare correttamente.
So che la maggior parte della configurazione è corretta, come ho aggiunto
[/]
joebloggs = rw
all'inizio e "joebloggs" ha quindi tutto l'accesso corretto.
Quando provo ad andare al repository specifico però, facendo qualcosa del genere
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
poi ho ricevuto un errore di autorizzazione negato per mickmurphy (joebloggs funziona ancora), con un errore simile a quello che avevo già precedentemente
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Inoltre, ho dimenticato di spiegare in precedenza che tutti i miei repository sono sottostanti
/var/lib/svn/repository
AGGIORNAMENTO (20090529-1245):
Ancora nessuna fortuna per farlo funzionare, ma tutti i segnali sembrano indicare che il problema è che il controllo dell'accesso al percorso in sovversione non funziona correttamente. La mia ipotesi è che non ho configurato apache o svn per riconoscere correttamente la mia struttura di repository.
Questo perché la voce '[/]' sembra funzionare perfettamente.
Mi viene anche in mente che questa è una domanda che potrebbe appartenere meglio a StackOverflow?
AGGIORNAMENTO (20090603-1740):
In risposta a uno dei commenti a questa domanda, al mio setup WebDAV per la sovversione viene data la posizione / svn / repos ma websvn è impostato su / websvn.