Subversion
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, susanneUm die Verzeichnis Rechte bei selbst angelegten svn Repositories zu ü,berprüfen gibt es das Skript ck_svn_perms.sh.


