Hi all,
Danke für den ansich guten und vollständigen Artikel. Allerdings fallen mir einige Dinge auf ...
1. Das Verzeichniss für das Repository sollte man unter "/var/lib/svn" legen und nicht unter "var/local/svn"!
Unter "/var/lib/" liegen auch alle anderen Daten und Datenbanken, bspw. "/var/lib/mysql" und spätestens mit den Erweiterungen "SVN/Apache" oder SVN-Server unter "/etc/init.d/" ist "svn" ein Dienst! Das Verzeichniss "/var/local/" ist nicht grundlos normalerweise komplett leer!
2. Im Beispiel für das Anlegen eines neuen Repositories wird die Option "--fs-type fsfs" für das Dateisystem als Speicherformat verwendet. Das ist nicht der Standard und auch nicht notwendig! Darauf sollte man zumindest hinweisen! Insbesonders, weil diese Filesystem-Option einige Nachteile hat, gegenüber dem Standardformat von SVN, welches mittlerweile auf einer Datenbank aufbaut und nicht grundlos das Filesystem als Default abgelöst hat! Die DB-Option funktioniert unabhängig vom Dateisystem! Es gibt aber auch noch zig andere Vorteile. Details und auch die endlose Diskussion dazu findet sich ua. auf der SVN-Entwicklerseite.
3. Wenn man einen Serverprozess (Dienst) unter "/etc/init.d/" einrichtet, ist es üblich eine(n) zugehörige(n) User/Group zu erstellen ("svn") und diesen User dann für den Dienst zu verwenden. In diesem Fall sollte man noch folgende Anweisungen im Abschnitt "svnserve" hinzufügen:
| # user/group anlegen
sudo adduser --no-create-home --disabled-password --disabled-login --group svn svn
|
Generell sollte man aus Sicherheitsgründen verhindern, dass sich "normale" Benutzer als "svn" einloggen oder das Passwort ändern. (daher die og. Zusatzoptionen beim Erstellen der SVN-Gruppe und des SVN-Systembenutzers.)
| # dem User den Besitz und die Rechte an dem SVN-Verzeichnis geben
# ("other" gebe ich gar keine Rechte, auch kein "read")
# (Dateien und Verzeichnisse benötigen unterschiedliche Rechte, daher 2x chmod-Kommandos)
sudo chown -R svn:svn /var/lib/svn
sudo find /var/lib/svn/ -type d -exec chmod 770 {} +
sudo find /var/lib/svn/ -type f -exec chmod 660 {} +
|
Anschließend weiss man auch, welche(n) User/Group man in dem "svnserve"-Script für die Variablen zu verwenden hat. (Antwort für das Posting weiter oben)^^
SVN_USER=svn
SVN_GROUP=svn
4. Ganz generell sollte man sich überlegen, ob man das SVN-Repository über Apache (http:// bzw. https:// ) oder SVNServe (svn:// bzw. svn+ssh:// ) (oder tatsächlich über beide Wege) zur Verfügung stellen will, da sich die weitere Vorgehensweise danach zu richten hat. Der Artikel mischt hier die beiden Vorgehensweisen aber auf einer Seite zusammen ...
5. ... Der Artikel ist mittlerweile insgesamt sehr lang, obwohl weitere wichtige Themen überhaupt noch nicht angesprochen wurden. Ich würde - zur besseren Übersicht - daher eine Aufteilung in mehrere Kapitel empfehlen (SVN/Apache oder SVNServe). Interessant wären auch noch weitere Artikel bzgl. VERSCHLÜSSELUNG per SSL (bei SVN/Apache) oder SVN-SSH (bei SVNServe) und Login/Authentifizierung per Zertifikaten.^^
Bei dem Thema "SVN" reden wir über die Verwaltung von Quellcodes! Und diese beinhalten - insbesonders bei Firmen - äußerst unternehmens- und sicherheitskritische Informationen. Von der Kapitalbindung und dem "geistigen Eigentum" ganz zu schweigen! Und selbst bei kostenlosen OpenSource-Projekten muss der Code vor UNBERECHTIGTER Manipulation (bspw. durch Hacker, Troianer, usw) geschützt werden! Das Thema Sicherheit, Verschlüsselung und Überwachung kann gar nicht genug behandelt werden, bei dem Thema "SVN"!
Nette Grüße
Marantis