[linux-l] Subversion und Authentifizierung durch Apache (was: Neuorganisation der Berlinux-Seiten)

Mike Dornberger Mike.Dornberger at gmx.de
Mo Nov 21 15:23:27 CET 2005


Hi Volker,

On Mon, Nov 21, 2005 at 01:38:02AM +0100, Volker Grabsch wrote:
> On Mon, Nov 21, 2005 at 12:46:58AM +0100, Mike Dornberger wrote:
> > > Wenn das CGI-Script jedoch das Erfassen der Login-Informationen
> > > komplett dem Apache überlässt (via HTTP-Auth), dann kennt es nur
> > > den Usernamen und nicht das Passwort. Aber es muss sich irgendwie
> > 
> > Es reicht unter Umständen vollkommen aus, nur den Benutzernamen zu kennen.
> > Das CGI-Script könnte z. B. snvserv -t --tunnel-user=<username> aufrufen.
> > Auch wenn das Repository dem User gehört, unter dessen Rechten das
> > CGI-Script bzw. snvserv läuft, werden die Änderungen im Log trotzdem User
> > username zugeschrieben.
> 
> Okay, dann können pauschal alle CGI-Scripte beliebige Änderungen im
> Repository vornehmen. Das ist ja genauso schlimm!
> 
> Oder du lässt das CGI-Script nur unter einem bestimmter User laufen,
> und svnserv lässt sich nur von diesem User Befehle erteilen.
> 
> In beiden Fällen kommst du ohne Passwort aus, das mag sein, aber das
> eigentlich Problem ist doch, dass das CGI-Script kompletten
> Schreibzugriff kriegt, statt genau die Rechte zu haben, die der User
> auch hätte, wenn er "selbst" einen Commit macht.
> 
> Das Webinterface soll schließlich lediglich ein
> 	"svn update - bearbeiten - svn commit"
> erledigen für diejenigen, die kein Working-Directory zu Hause wollen.
> 
> > Die Zugriffskontrolle auf einzelne Pfade muß man derzeit (svn 1.1) noch über
> > die Hook-Scripts machen. (Später sollen dann mal ACLs eingesetzt werden.)
> > 
> > (Siehe auch svnbook: http://svnbook.red-bean.com/en/1.1/ch06.html )
> 
> Dafür würde ich lieber dav_svn_autz einsetzen. Und ausschließlich
> Zugriff via HTTP(S) auf das Repository, kein SSH oder ähnliches.
> 
> Und das Webinterface sollte im Prinzip genau diesen Weg ebenfalls
> gehen, d.h. die URL zum Repository kriegen, sich mit den Userdaten
> authentifizieren, und das Zeug committen.
> 
> Keine extra Hintertür, um dem CGI-Script volle Schreibrechte auf
> alles zu geben, bloß um dann die *Ausführung* des Scriptes zu
> beschränken ... dann hast du nämlich spätestens dann ein Problem,
> wenn im Subversion-Repository auch User drin sind, die auf das Wiki
> keine Schreibrechte kriegen sollen. Da kannst du dann nicht mehr
> einfach die selbe ".htaccess" nehmen, weil dann jeder SVN-User,
> volle Schreibrechte auf alles hat, egal was in der Authz-Datei
> steht. Dann müsste sich das CGI-Script auch noch um die Autorisierung
> kümmern, und spätestens dann wird's absurd. Da soll sich das CGI-Script
> doch lieber kurz das Passwort merken, und im Namen des Users arbeiten,
> statt irgendeine Sonderrolle einzunehmen.
> 
> Hat auch den Vorteil, dass der Subversion-Server ganz woanders
> sein kann, oder würdest du auf dem anderen System dann extra den
> SSH-PublicKey des Wiki-Systemaccounts eintragen?

hm, irgendwie bin ich mir nicht mehr ganz sicher, wie Du gerade denkst, daß
der Repository-Zugriff geschehen soll. (Deswegen auch dieses Mega-Quote
jetzt.)

Manchmal habe ich den Eindruck, alle User sollen ausschließlich per Wiki auf
das Repository zugreifen. Dann scheint es mal wieder so, als sollte alles
über mod_dav_svn laufen. Dann, daß die User noch andere
Zugriffsmöglichkeiten auf das Repository haben sollen, z. B.: ssh+svn:// Zum
Schluß schreibst Du etwas, daß das Repository auf einem ganz anderen Rechner
liegen soll.

Wenn auf das Repository über mod_dav_svn zugegriffen werden soll, muß daß
Repository auf dem gleichen Rechner liegen, da dann Apache nämlich volle
Schreib-/Leserechte auf z. B. die Berkeley-DB benötigt. (Ja, ich weiß, daß
es auch fsfs gibt.) Wenn da jetzt noch zusätzlich per ssh+svn:// zugegriffen
werden soll, wird's ganz haarig mit den UNIX-Permissions, siehe z. B.
svnbook, Kapitel 6, Abschnitt "Supporting Multiple Repository Access
Methods".

Vielleicht sollten wir erst einmal klären, wer wann wo warum worauf zugreift
und hier nicht so allgemein über irgendwelche Zugriffsmöglichkeiten auf
irgendein svn-Repository reden.

Von dem, was ich auf
http://svn.webdav.org/repos/projects/subwiki/trunk/INSTALL.html gelesen
habe, bekomme ich den Eindruck, daß das SubWiki-Repository lokal auf dem
Rechner liegen muß und daß das CGI nicht durch den svn Command-Line-Client,
sondern über die Subversion-Libraries (s. auch Kap. 8 svnbook) auf das
Repository zugreift. Und an dieser Stelle reicht es wirklich schon, sich per
Apache zu authentifizieren. Wenn man dann überhaupt das "Schreib-CGI"
ausführen darf, besteht überhaupt kein Grund mehr, daß Paßwort ein weiteres
Mal zu benutzen. O. g. URL sagt _mir_, man kann zusätzlich das Repository z.
B. per mod_dav_svn zugänglich machen, aber das ist eine ganz andere
Baustelle und hat in dem Sinne jetzt schon gar nichts mehr mit SubWiki zu
tun. _Jetzt_ kommt man dann vielleicht an einen Punkt, wo verschiedene
User/Paßwort-Dateien nicht mehr zueinander passen.

Aber mal um auf das ursprünglich(er)e Thema zurückzukommen: Will man denn
wirklich ein Wiki für die Berlinux-Seiten? Sind andere Methoden nicht doch
besser geeignet? Vielleicht ist es Zeit für eine Umfrage...

Grüße,
 Mike



Mehr Informationen über die Mailingliste linux-l