Folgendes soll erreicht werden:
- Es sollen mehrere SVN Repositories angelegt werden können
- Jedes SVN Repository erlaubt nur eine SSL Verbindung
- Unter einer Subdomain (svn.domain.tld) werden alle Repositories angezeigt
- Es wird nur eine Passwort-Datei angelegt in der sich alle Benutzer des SVN befinden
- Es wird ACL angelegt, über die die Zugriffsteuerung realisiert wird
1) Pakete installieren
apt-get install subversion libapache2-svn
2) Subdomain https://svn.domain.tld einrichten
cd /etc/apache2/sites-available/
vi svn
Folgenden Text einfügen:
<VirtualHost svn.domain.tld:443>
ServerName svn.domain.tld
SSLEngine on
SSLCertificateFile /path/to/svncert/svn.crt
SSLCertificateKeyFile /path/to/svnkey/svn.key
SSLCACertificatePath /etc/ssl/certs/
SSLCACertificateFile /path/to/rootca/My-Root-CA.pem
<Location />
DAV svn
SVNParentPath /path/to/repositories/
SVNListParentPath on
</Location>
<LocationMatch /.+>
AuthType Basic
AuthName "Subversion"
AuthUserFile /path/to/passwd/svn.passwd
AuthzSVNAccessFile /path/to/authz/svn.authz
Require valid-user
SSLRequireSSL
</LocationMatch>
</VirtualHost>
3) https://svn.domain.tld aktivieren
a2ensite svn
4) Benutzer anlegen
cd /path/to/passwd/
touch svn.passwd
htpasswd -m user1 (Danach kommt Passwortabfrage)
5) ACL anlegen
cd /path/to/authz/
vi svn.autz
In diese kann man dann folgendes eintragen:
[groups]
all = admin, user1, user2, user3
g1 = user1, user2
g2 = user1, user3
[/]
* = r
admin = rw
[repo1:/]
@g1 = rw
user3 = r
* =
[repo2:/]
@g2 = rw ## Gruppe 2 darf lesen und schreiben
* = ## Der Rest darf nichts
[repo3:/]
@all = r ## Alle User dürfen das Root-Verzeichnis von repo3 lesen
admin = rw ## Der Admin darf auch schreiben
* = ## Der Rest darf nichts
[repo3:/public/]
* = r ## Alle dürfen den public Ordner lesen im repo3
6) Repositories anlegen
svnadmin --fs-type fsfs /path/to/repositories/repo1
svnadmin --fs-type fsfs /path/to/repositories/repo2
svnadmin --fs-type fsfs /path/to/repositories/repo3
Berechtigung setzen:
chown -R www-data:www-data /path/to/repositories/*
chmod -R 770 /var/svn/*
7) Apache neu laden
/etc/init.d/apache2 reload
Jetzt müsste man eine Auflistung alle Repositories unter https://svn.domain.tld finden.
Unter https://svn.domain.tld/repo1 findet man Repository 1, usw.