Skip to content.
Sections
You are here: Home » Angebotene Dienste » Subversion

Subversion

Einrichtung von Subversion Repositories am CIP

Subversion

Allgemeine Dokumentation zu Subversion gibt es auf der Doku Seite.

Zugriff auf die Repositories

Der Pfad ~/public_svn ist als SVNParentPath in die webserver als ~<username>/svn eingebunden. SVNParentPath heisst, dass darunter Subversion Repositories liegen. Man kann also mehrere getrennte Repositories verwalten.

Die Repositories (Beispiel Repository Name"test" und Benutzername "user") währen dann erreichbar über:
https://svn.cip.ifi.lmu.de/~user/svn/test
https://www.cip.ifi.lmu.de/~user/svn/test
http://www.cip.ifi.lmu.de/~user/svn/test

Einrichten eines Repositories ("test"):

Um die Einrichtung eines Repositories zu erleichtern gibt es das Skript mk_svn_repo.sh.
mk_svn_repo.sh test

Um ein Repository von Hand anzulegen sind folgende Befehle nötig. Allerdings wird die Verwendung von mk_svn_repo.sh empfohlen. mkdir ~/public_svn
svnadmin create ~/public_svn/test --fs-type fsfs --pre-1.6-compatible
chmod -R o=u,g-rwx ~/public_svn

Zugriffsbeschränkung

Um Zugriff auf das Repository zu erhalten, muss man sowohl die Authentifizierung als auch die Autorisierung konfigurieren.

Authentifizierung

Die Authentifizierung (Festellung wer der Zugreifende ist) wird über die Datei ~/.htaccess_svn konfiguriert.
Das Skript mk_svn_repo.sh legt eine einfache .htaccess_svn an falls noch keine existiert.
Falls man die Datei selber anlegen oder verändern will ist Folgendes zu beachten:
Die Datei muss von others lesbar sein: chmod 604 ~/.htaccess_svn
Es gelten die üblichen .htaccess Regeln.

Eine Beispiel ~/.htaccess_svn Datei:

AuthType Basic
AuthName "Subversion repository von User"
AuthUserFile  /etc/subversion/htpasswd
AuthGroupFile /home/u/user/.htgroup_svn
Require valid-user

Um Zugang zu erhalten muss noch die Datei ~/public_svn/auth konfiguriert werden. Auch diese Datei wird durch mk_svn_repo.sh angelegt falls sie noch nicht existiert und erweitert falls es sich um eine durch das Skript generierte Version handelt. Falls die Datei händisch verändert wurde muss sie fortan selbst gepflegt werden.

Das .htgroup_svn file wird im Normalfall nicht benutzt. Stattdessen werden Gruppen in ~/public_svn/auth verwaltet. .htgroup_svn und ~/public_svn/auth stellen zwei verschiedene Mechanismen zur Verwaltung von Benutzern und Gruppen dar. Es handelt sich nicht einfach um eine Datei die an zwei verschiedenen Orten abgelegt werden kann. Die Datei ~/public_svn/auth wird von svn automatisch gefunden und muss daher nicht eigens eingetragen werden.

Um anonymen Zugriff zu ermöglichen muss zum einen die Zeile "Satisfy Any" in die .htaccess_svn eingetragen werden und zum anderen noch in ~/public_svn/auth die Zeile "* = r" unter dem gewünschten Pfad eingefügt werden.

Die Datei /etc/subversion/htpasswd wird über CIP Conf gewartet und jeder Benutzer am CIP kann sich dort ein Passwort setzen, so dass, wenn man diese Datei als AuthUserFile benutzt, sich nicht um das Passwort Management kümmern muss. Die Benutzernamen entsprechen dann denen am CIP.

Man kann jedoch auch ein eigenes File benutzen. Zum anlegen und hinzufügen des Benutzer "user" erzeugt man dann ein AuthUserFile ".htpasswd_svn" mit:

/usr/bin/htpasswd -c .htpasswd_svn user

Man muss den vollständigen Pfad für .htpasswd angeben (etwa /home/u/user/.htpasswd_svn). Um weitere Benutzer hinzuzufügen läßt man dann die option -c (lege neue Datei an) weg, da sonst die alte Datei überschrieben wird:

/usr/bin/htpasswd .htpasswd_svn user2

Autorisierung

Die Berechtigungen (Autorisierung) auf die Repositories wird über die Datei ~/public_svn/auth konfiguriert.
Das Skript mk_svn_repo.sh legt diese Datei an und trägt für jedes Repository den User mit vollen Rechten ein. Sollte die Datei händisch verändert werden um zum Beispiel anderen Usern Zugriff zu erlauben muss sie fortan von Hand gepflegt werden.

Ein Beispiel um dem user "user" vollen, dem user "freund" nur lesenden Zugriff auf das repository "test" zu geben und der gruppe "team" nur lesenden auf den Repository Pfad "/gut" sowie dem allen anderen ("* = r") nur lesenden auf den Pfad "/offen" zu geben.


Beispiel ~/public_svn/auth:
[test:/]
user = rw
freund = r

[test:/gut]
@team = r

[test:/offen]
* = r

[groups]
team = peter, susanne
Um die Verzeichnis Rechte bei selbst angelegten svn Repositories zu ü,berprüfen gibt es das Skript ck_svn_perms.sh.