Technologieführer

SVN-Server auf CentOS einrichten und testen

8 min read Systemadministration Aktualisiert 19 Oct 2025
SVN-Server auf CentOS einrichten
SVN-Server auf CentOS einrichten

Dieses Tutorial zeigt Schritt für Schritt, wie Sie auf einem CentOS-Server einen Subversion (SVN)-Repository einrichten, über Apache bereitstellen, Benutzer und Zugriffsrechte konfigurieren und den Zugriff von Linux- und Windows-Clients testen. Am Ende haben Sie ein funktionierendes Repository mit differenzierten Lese-/Schreibrechten.

Wichtig: Ziel dieses Leitfadens ist eine praktische, auf Apache basierende Bereitstellung. Alternativen (svnserve, HTTPS, LDAP-Anbindung) werden weiter unten kurz beschrieben.

Einführung

Was ist SVN?

Subversion (kurz SVN) ist ein Versionsverwaltungssystem. Es speichert die Historie von Dateien und Ordnern und erlaubt mehreren Nutzern, Änderungen nachzuverfolgen und zusammenzuarbeiten.

Kurzdefinition: SVN ist ein zentrales Versionsverwaltungssystem für Dateien und Verzeichnisse, häufig genutzt für Quellcode und Dokumentation.

Voraussetzungen

  • Ein CentOS-Server (in diesem Tutorial: CentOS 6.4, 32-Bit). Die Schritte funktionieren ähnlich auf neueren CentOS-Versionen, prüfen Sie nur Paketnamen und Repositories.
  • Root‑Zugriff oder sudo‑Rechte.
  • Netzwerkzugang zwischen Server und Clients (Port 80 für HTTP oder 443 für HTTPS). Dieser Leitfaden verwendet HTTP/Port 80.

Wichtige Begriffe in einer Zeile

  • Repository: zentraler Speicherort für Versionen.
  • SVNPath: Pfad zur Repository-Datenbank auf dem Server.
  • Authz: Datei für fein granulare Zugriffsrechte.

1 Vorbemerkung

Für die Beispiele in diesem Tutorial verwenden wir CentOS 6.4 (32-Bit). Die gezeigten Kommandos sind Shell-kompatibel; Ausgaben sind als Beispiele belassen.

Hinweis: Passen Sie IP‑Adressen, Pfade und Benutzernamen an Ihre Umgebung an.

2 Installation von Apache, Subversion und mod_dav_svn

Auf einem frischen System müssen die Pakete httpd, subversion und mod_dav_svn installiert werden. Apache (httpd) dient hier als Webserver, der das Repository über WebDAV bereitstellt. Alternativ sind nginx oder lighttpd möglich, benötigen aber eine andere Integration.

Beispiel: einfache Netzwerkschnittstellen-Abfrage (nur zur Kontrolle):

ifconfig

Beispielausgabe (gekürzt):

[root@SVNSVR641 ~]# ifconfig  
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88  
inet addr:192.168.43.101 Bcast:192.168.43.255 Mask:255.255.255.0  
...

Installationsschritte (yum-Beispiele):

yum install -y httpd

Die Paketinstallation liefert eine typische Yum-Ausgabe. Anschließend Subversion und das Apache-Modul installieren:

yum install -y subversion
yum install -y mod_dav_svn

Nach erfolgreicher Installation sollten die Pakete httpd, subversion und mod_dav_svn auf dem System vorhanden sein.

Hinweis: Auf neueren Systemen verwenden Sie dnf oder passen Sie Paketnamen an (z. B. x86_64-Architektur statt i686).

3 Repository anlegen und Grundkonfiguration

Schritt 1: Verzeichnis für Repositories anlegen (gute Praxis für Produktion):

mkdir /data/svn

Schritt 2: Erstes Repository erstellen (hier: repo1) und Eigentümer ändern, damit Apache Zugriff hat:

svnadmin create /data/svn/repo1  
chown -R apache:apache /data/svn/repo1

Wechsel in das Repository-Verzeichnis, prüfen der Standardstruktur:

cd /data/svn/repo1  
ls

Beispielausgabe:

[root@SVNSVR641 repo1]# ls  
conf db format hooks locks README.txt

Die Dateien in conf/ sind zentral für Authentifizierung und Autorisierung.

Schritt 3: SVN-Serverkonfiguration anpassen

Öffnen Sie die Datei svnserve.conf in conf/:

cd /data/svn/repo1/conf/  
ls
vi svnserve.conf

Beispielinhalt (für Authentifizierung über passwd und authz):

[general]  
anon-access = none  
auth-access = write  
password-db = passwd  
authz-db = authz

Erklärung: anon-access = none verbietet anonymen Zugriff. auth-access = write erlaubt authentifizierten Nutzern Schreibzugriff, sofern die Authz-Regeln dies erlauben.

Schritt 4: Benutzer anlegen (htpasswd)

Wir legen Benutzer mit htpasswd an. Die Datei liegt in /data/svn/repo1/conf/passwd.

htpasswd -c /data/svn/repo1/conf/passwd jay

Beispielausgabe (Interaktion für Passwort):

[root@SVNSVR641 conf]# htpasswd -c /data/svn/repo1/conf/passwd jay  
New password:  
Re-type new password:  
Adding password for user jay

Weitere Benutzer hinzufügen (ohne -c, damit bestehende Datei erweitert wird):

htpasswd /data/svn/repo1/conf/passwd fikri
htpasswd /data/svn/repo1/conf/passwd farid

Kontrolle der Datei:

cat /data/svn/repo1/conf/passwd

Beispielinhalt (Passworthashes):

jay:14hCNCmBZY/qA  
fikri:/hlooqJMfYLkw  
farid:P7Zvu6B3HyFGo

Wichtig: htpasswd speichert Passwort-Hashes; die Datei nicht öffentlich zugänglich machen.

Schritt 5: Zugriffsrechte per authz setzen

Die Datei authz steuert, wer in welchem Repository/Verzeichnis welche Rechte hat. Beispiel:

vi /data/svn/repo1/conf/authz
[repo1:/]  
farid = r  
fikri = rw  
* =

Erklärung: farid hat nur Lesezugriff (r), fikri Lese- und Schreibzugriff (rw). Alle anderen (*) haben keine Rechte.

4 Apache konfigurieren (mod_dav_svn)

Öffnen Sie die globale Apache-Konfiguration /etc/httpd/conf/httpd.conf und stellen Sie sicher, dass externe Konfigurationen geladen werden:

Include conf.d/*.conf

Anschließend die Subversion-spezifische Konfiguration in /etc/httpd/conf.d/subversion.conf anpassen (oder erstellen):

vi /etc/httpd/conf.d/subversion.conf

Beispielinhalt:

LoadModule dav_svn_module modules/mod_dav_svn.so  
LoadModule authz_svn_module modules/mod_authz_svn.so  
  
  
DAV svn  
SVNPath /data/svn/repo1  
Authtype Basic  
AuthName "My Repository"  
AuthzSVNAccessFile /data/svn/repo1/conf/authz  
AuthUserFile /data/svn/repo1/conf/passwd  
Require valid-user  

Erklärung der wichtigsten Direktiven:

  • LoadModule …: bindet das SVN-Apache-Modul ein.
  • : URL-Pfad, unter dem das Repository erreichbar ist.
  • SVNPath: physischer Pfad zum Repository.
  • AuthzSVNAccessFile: Pfad zur Datei mit Zugriffsregeln.
  • AuthUserFile: htpasswd-Datei mit Benutzern.
  • Require valid-user: verlangt gültige Authentifizierung.

Schritt 6: Apache neu starten

service httpd restart

Beispielausgabe:

[root@SVNSVR641 conf.d]# service httpd restart  
Stopping httpd: [ OK ]  
Starting httpd: [ OK ]

5 Testphase: Zugriff von Clients

In diesem Abschnitt testen wir den Zugriff mit einem Linux-Client und einem Windows-Client (TortoiseSVN). Ziel: prüfen, ob die Zugriffsrechte wie konfiguriert greifen.

5.1 Test von Linux-Client

Auf dem Linux-Client Subversion installieren (falls nötig):

yum install -y subversion

Repository auschecken (checkout):

mkdir repo_client  
svn co http://192.168.43.101/repo1 repo_client

Authentifizierung: Geben Sie den Benutzernamen (z. B. fikri) und das Passwort ein. Subversion warnt eventuell, dass Passwörter unverschlüsselt gespeichert werden. Die Warnung kann durch passende Konfiguration in /root/.subversion/servers unterbunden werden.

Nach erfolgreichem Checkout:

Checked out revision 0.
cd repo_client/  
ls -a

Ergebnis: .svn-Verzeichnis vorhanden.

Test: Schreibzugriff prüfen (als fikri mit rw-Rechten):

cd repo_client/  
svn mkdir first_dir
svn commit -m "My first folder"

Erwartung: Commit erfolgreich (Committed revision 1).

5.2 Test mit Windows-Client (Browser und TortoiseSVN)

Browser-Test

Öffnen Sie die URL http://192.168.43.101/repo1 in einem Browser. Es erscheint ein Authentifizierungsfenster.

SVN HTTP auth

ALT: Authentifizierungsdialog des Browsers für SVN-Zugang

Wenn Sie sich mit dem Benutzer JAY anmelden (kein Recht), sehen Sie eine Zugriff verweigert-Seite:

Access Forbidden

ALT: Browser zeigt Zugriff verweigert (403 Forbidden)

Windows-Client mit TortoiseSVN

  1. Installieren Sie TortoiseSVN.
  2. Rechtsklicken Sie auf ein Verzeichnis, wählen Sie “SVN Checkout” und geben Sie die Repository-URL ein.

Enter the SVN repository URL.

ALT: TortoiseSVN Checkout-Dialog mit URL-Eingabe

  1. Melden Sie sich als FARID (nur Leser). Nach erfolgreichem Checkout sehen Sie die vorhandenen Verzeichnisse (z. B. FIRST_DIR von fikri):

SVN checkout completed

ALT: TortoiseSVN zeigt erfolgreiche Checkout-Meldung

Directory List

ALT: Verzeichnisliste im ausgecheckten Arbeitsverzeichnis

Test: Schreibrechte kontrollieren (FARID ist nur lesend)

  • Erstellen Sie lokal ein Verzeichnis SECOND_DIR und fügen Sie es zur Versionskontrolle hinzu (Add).

Create the directory in Windows

ALT: Lokales Verzeichnis im Windows Explorer erstellen

  • Add und Commit ausführen. Beim Commit erscheint die Authentifizierungsaufforderung. Geben Sie FARID ein.

Nach dem Commit erhalten Sie eine Fehlermeldung: Schreibzugriff verweigert — wie erwartet, denn FARID hat nur Lesezugriff.

Write access has been denied to the read-only user.

ALT: Fehlermeldung: Schreibzugriff verweigert für read-only Benutzer

6 Best Practices, Troubleshooting und Sicherheitshinweise

Best Practices

  • Legen Sie Repositories außerhalb von Webdokumentverzeichnissen an (z. B. /data/svn).
  • Sichern Sie die conf-Verzeichnisse regelmäßig (passwd, authz).
  • Verwenden Sie HTTPS (TLS) in produktiven Umgebungen, damit Passwörter nicht im Klartext über das Netzwerk gehen.
  • Prüfen Sie Dateirechte und SELinux-Kontext (falls aktiviert), damit Apache lesen/schreiben darf.

Kurz-Checkliste vor dem Produktivstart (Admin):

  • Repository erstellt und chown gesetzt (apache:apache).
  • Authentifizierung getestet (htpasswd-Datei funktioniert).
  • Authz-Regeln geprüft (keine offenen Schreibrechte für *).
  • Apache-Konfiguration geladen und neu gestartet.
  • Backup-/Snapshot-Plan vorhanden.

Häufige Fehler und Lösungen

  • 403 Forbidden nach Login: Prüfen Sie authz-Datei und Pfade. Stellen Sie sicher, dass AuthzSVNAccessFile korrekt gesetzt ist.
  • 401 Unauthorized: htpasswd-Datei falsch oder Apache liest andere Auth-Module. Prüfen Sie AuthUserFile.
  • Passwort-Warnung bei Subversion-Client: Subversion warnt, wenn Passwörter unverschlüsselt auf dem Client gespeichert werden. Konfigurieren Sie die Verschlüsselung in ~/.subversion.
  • SELinux verweigert Zugriff: Prüfen Sie audit.log und setzen Sie ggf. passenden SELinux-Kontext mit chcon oder verwenden Sie semanage.

Sicherheits- und Datenschutzhinweise

  • Verwenden Sie HTTPS (TLS) in produktiven Umgebungen. Basic-Auth über HTTP sendet Passwörter potenziell unverschlüsselt.
  • Beschränken Sie den Zugriff per Firewall (nur bekannte Netze zulassen).
  • Verwenden Sie zentrale Authentifizierungsquellen (LDAP/AD) in größeren Umgebungen anstelle lokaler htpasswd-Dateien.
  • Prüfen Sie, welche personenbezogenen Daten in Repositories liegen. Für personenbezogene Daten (nach DSGVO) benötigen Sie einen Aufbewahrungs- und Löschprozess.

7 Alternative Ansätze und Erweiterungen

  • svnserve statt Apache: svnserve ist der in Subversion integrierte Server und bietet ein eigenes Netzwerkprotokoll (svn://). Er ist einfacher einzurichten, bietet aber weniger feingranulare WebDAV-Integration.
  • HTTPS mit mod_ssl: Absichern der Verbindung über TLS. Empfehlenswert für produktive Umgebungen.
  • LDAP/AD-Authentifizierung: Statt htpasswd können Sie Apache mit mod_authnz_ldap an ein Verzeichnisdienst anbinden.
  • Hooks: Nutzen Sie Hooks (pre-commit, post-commit) für automatische Prüfungen oder Deployment.

Kurze Entscheidungsheuristik

  • Kleine Teams / internes Netzwerk: Apache + htpasswd ist schnell und genügt.
  • Größere Organisationen: Verwenden Sie HTTPS + LDAP/AD und automatisierte Backups.
  • Performance/Skalierung: Prüfen Sie Dateisystemleistung, verwenden Sie separate Storage-Volumes und Monitoring.

8 Mini-Methodik: Schritt-für-Schritt-Checkliste für die Umsetzung

  1. System aktualisieren und Firewall prüfen.
  2. Apache, Subversion, mod_dav_svn installieren.
  3. /data/svn anlegen, Repository erstellen, chown setzen.
  4. passwd und authz anlegen und testen.
  5. Apache-Konfiguration anpassen, SVN-Location einrichten.
  6. Apache neustarten, Logs prüfen (error_log, access_log).
  7. Test-Checkout von mindestens zwei Clients (Linux/Windows).
  8. Backup-Plan erstellen und Hooks konfigurieren.

9 Faktenbox

  • Standardport für HTTP: 80
  • Empfohlen: HTTPS (Port 443) für produktive Umgebungen
  • Typische Subversion-Dateistruktur: conf/, db/, hooks/, locks/
  • Authentifizierung: htpasswd (kleine Umgebungen), LDAP/AD (große Umgebungen)

10 Rollenbasierte Checkliste

Administrator

  • Erstellt Repositories und legt Dateirechte fest.
  • Sorgt für Apache- und Sicherheitskonfiguration.
  • Plant Backups und Disaster Recovery.

Entwickler / Anwender

  • Nutzt Checkout/Update/Commit-Workflows.
  • Pflegt Commit-Nachrichten und respektiert branching/tagging-Strategien.

Release-Manager

  • Legt Hook-Skripte für automatisierte Tests/Builds an.
  • Verwendet Tags für produktive Releases.

11 Kurze Glossarzeile

  • Commit: Übertragen lokaler Änderungen in das zentrale Repository.
  • Checkout: Lokale Kopie einer bestimmten Revision aus dem Repository.
  • Hook: Serverseitiges Skript, das bei bestimmten Ereignissen ausgeführt wird.

12 Fazit

Mit den beschriebenen Schritten haben Sie einen funktionierenden SVN-Server auf CentOS eingerichtet, Benutzer und Zugriffsrechte definiert und den Zugriff von Linux- und Windows-Clients getestet. Für produktive Umgebungen empfehlen sich zusätzlich HTTPS, zentrale Authentifizierung (LDAP/AD) und ein Backup-Konzept.

Wichtiger Hinweis: Passen Sie die IP-Adresse, Pfade und Benutzer an Ihre Umgebung an. Testen Sie alle Änderungen zuerst in einer kontrollierten Testumgebung.

Zusammenfassung und nächste Schritte

  • Testen Sie ein Backup/Restore-Verfahren für /data/svn.
  • Erwägen Sie eine Migration zu HTTPS und LDAP/AD, wenn mehrere Nutzer im Netzwerk arbeiten.
  • Automatisieren Sie Hooks für Qualitätschecks auf Commits.
Autor
Redaktion

Ähnliche Materialien

SaaS‑Anbieter auswählen: Leitfaden für 2024
SaaS

SaaS‑Anbieter auswählen: Leitfaden für 2024

Google speichert Screenshots Ihrer Suchergebnisse
Datenschutz

Google speichert Screenshots Ihrer Suchergebnisse

Android als Tastatur & Maus für PC (Intel)
Anleitungen

Android als Tastatur & Maus für PC (Intel)

WhatsApp-Backups sichern: Google Drive-Änderung
Anleitung

WhatsApp-Backups sichern: Google Drive-Änderung

360°-Fotos auf Facebook: Hochladen & ansehen
Social Media

360°-Fotos auf Facebook: Hochladen & ansehen

VLC: Videos in andere Formate konvertieren
Software

VLC: Videos in andere Formate konvertieren