Donnerstag, 5. Mai 2011

Multiple SVN Repositories + SSL + SVN-Subdomain + ACL

Läuft unter Debian 6.0 (Squeeze) - Subversion (1.6.12)

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.

Keine Kommentare: