Ich habe mehrere Subversion-Repositorys, die über Apache 2.2 und WebDAV bereitgestellt werden. Sie befinden sich alle an einem zentralen Ort, und ich habe diesen Artikel von debian-administration.org als Grundlage verwendet (ich habe jedoch die Verwendung der Datenbankauthentifizierung für eine einfache htpasswd-Datei eingestellt).
Seitdem benutze ich auch WebSVN . Mein Problem ist, dass nicht alle Benutzer im System auf die verschiedenen Repositorys zugreifen können sollten. Die Standardeinstellung von WebSVN besteht darin, jedem zu erlauben, der sich authentifizieren kann.
Laut der WebSVN-Dokumentation besteht der beste Weg, dies zu umgehen, darin, das Pfadzugriffssystem von Subversion zu verwenden. Daher habe ich versucht, dies mithilfe der AuthzSVNAccessFile-Direktive zu erstellen.
Wenn ich das mache, bekomme ich immer wieder "403 Forbidden" -Nachrichten.
Meine Dateien sehen wie folgt aus:
Ich habe Standardrichtlinieneinstellungen in einer Datei:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Jedes Repository erhält eine Richtliniendatei wie folgt:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
Die Datei default_auth.conf enthält Folgendes:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Ich bin mir nicht ganz sicher, warum ich den zweiten SVNParentPath in default_auth.conf benötige, aber ich habe dies heute hinzugefügt, da ich aufgrund des Hinzufügens der AuthzSVNAccessFile-Direktive Fehlermeldungen erhielt.
Mit einer völlig zulässigen Zugriffsdatei
[/]
joebloggs = rw
Das System funktionierte einwandfrei (und war im Wesentlichen unverändert), aber sobald ich anfange, irgendwelche Einschränkungen hinzuzufügen, wie z
[sysadmin:/]
joebloggs = rw
Stattdessen erhalte ich erneut die Fehler "Berechtigung verweigert". Die Einträge in der Protokolldatei sind:
[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
Was muss ich tun, damit dies funktioniert? Haben Sie Apache falsch konfiguriert oder ist mein Verständnis der Datei svnaccess.conf falsch?
Wenn ich dies falsch mache, habe ich keine besondere Bindung an meinen Gesamtansatz. Sie können also auch Alternativen anbieten.
UPDATE (20090528-1600):
Ich habe versucht, diese Antwort zu implementieren , aber ich kann sie immer noch nicht richtig zum Laufen bringen.
Ich weiß, dass der größte Teil der Konfiguration korrekt ist, wie ich hinzugefügt habe
[/]
joebloggs = rw
am start und 'joebloggs' hat dann den richtigen zugang.
Wenn ich jedoch versuche, repository-spezifisch zu werden, mache ich so etwas
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
dann bekam ich eine Erlaubnis verweigert mickmurphy Fehler (joebloggs funktioniert immer noch), mit einem Fehler ähnlich dem, den ich bereits zuvor hatte
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Außerdem habe ich zuvor vergessen zu erklären, dass sich alle meine Repositories darunter befinden
/var/lib/svn/repository
UPDATE (20090529-1245):
Immer noch kein Glück, dass dies funktioniert, aber alle Anzeichen scheinen darauf hinzudeuten, dass das Problem mit der Pfadzugriffskontrolle in Subversion nicht richtig funktioniert. Ich gehe davon aus, dass ich Apache oder SVN nicht so konfiguriert habe, dass meine Repository-Struktur richtig erkannt wird.
Dies liegt daran, dass der Eintrag '[/]' perfekt zu funktionieren scheint.
Mir fällt auch ein, dass dies eine Frage ist, die besser zu StackOverflow gehört.
UPDATE (20090603-1740):
Als Antwort auf einen der Kommentare zu dieser Frage erhält mein WebDAV-Setup für die Subversion selbst den Speicherort / svn / repos, aber websvn ist auf / websvn gesetzt.