Re: Subversion-Problem

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 2 Aug 2013 09:42:29 +0200 (CEST)

Peter Ross wrote:
> On Thu, 1 Aug 2013, Oliver Fromme wrote:
> > Peter Ross wrote:
> > > 26 2 drwxr-sr-x 4 www wheel - 4 Aug 1 16:07 .
> > > 24 2 drwxr-sr-x 6 www wheel - 16 Aug 1 17:40 ..
> > > 27 14 drwxr-sr-x 2 www wheel - 1002 Aug 1 15:58 0
> > > 13022 2 drwxr-sr-x 2 www wheel - 2 Aug 1 16:07 1
> >
> > Wenn der www-User nicht in der Gruppe wheel ist (was er per
> > Default nicht ist und auch nicht sein sollte), dann kann er
> > natürlich kein chmod(02755) auf irgendein Verzeichnis oder
> > eine Datei machen, die der wheel-Group gehört. Das dürfte
> > die Ursache für das »Can't set permissions on ...« sein.
>
> Ja.. aber: Warum wird das erst als Group wheel angelegt?

Weil das Parent-Verzeichnis der wheel-Group gehört.

> Der Apache läuft mit der www-Gruppe, das habe ich eben noch einmal
> verifiziert.
>
> Da sollten Dateien, die dadurch angelegt werden, auch dieser
> effektiven Group gehören?

Nein, bei BSD-Systemen erhalten neue Verzeichniseinträge
immer erstmal die Gruppe, der auch das Verzeichnis gehört
(auch dann, wenn der Prozess gar nicht Mitglied dieser
Gruppe ist).

Bei SysV-basierten Systemen dagegen (z.B. Solaris, und auch
Linux hat dies übernommen) wird das Verhalten vom sgid-Bit
gesteuert: Ist es nicht gesetzt (default), gehören neue
Verzeichniseinträge der EGID des Prozesses. Ist es jedoch
gesetzt, gilt die BSD-Semantik, d.h. neue Einträge erhalten
die gleiche GID wie das Parent-Verzeichnis, und auch das
sgid-Bit wird (bei Verzeichnissen) weitervererbt, damit die
BSD-Semantik automatisch auch für neue Unterverzeichnisse
gilt.

Ich vermute, dass dies der Grund ist, warum Subversion das
sgid-Bit setzen will: Um sicherzugehen, dass BSD-Semantik
für alle Verzeichnisse gilt, damit die Gruppenzugehörigkeit
weitervererbt wird. Dass das unter FreeBSD überhaupt nicht
notwendig ist, scheint es offenbar nicht zu interessieren
(wobei das allerdings auch nicht schaden sollte; bei BSD
wird das sgid-Bit bei Verzeichnissen einfach ignoriert).

Die Lösung für das vorliegende Problem ist also einfach,
dafür zu sorgen, dass die Verzeichnisse zu einer Gruppe
gehören, in der der ausführende Prozess (Apache) Mitglied
ist. Also entweder den www-User der wheel-Group hinzufügen
(*nicht* empfehlenswert), oder die Verzeichnisse der www-
Group übergeben, oder eine dritte Gruppe anlegen ("mysvn"
oder was auch immer) und diese verwenden. Letzteres wäre
theoretisch am flexibelsten, da man dann bei Bedarf einfach
weiteren Usern Zugriff auf das Repository geben kann, ohne
dass sie gleich auf den ganzen Webserver zugreifen können.

> > Ich würde mal ein »chgrp -R www« auf das ganze Schlamassel
> > machen (bzw. unter welcher Group auch immer der Server läuft).
>
> Das klappt deshalb nicht, weil neue Files mit der "wheel"-Gruppe angelegt
> werden.

Nein: Wenn das Parent-Verzeichnis der www-Group gehört,
dann gehören neuen Dateien ebenfalls der www-Group. Und
Subversion kann sie auch nicht nachträglich auf wheel
ändern, weil der www-User nicht in der wheel-Group ist.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG,  Marktplatz 29, 85567 Grafing
Handelsregister:  Amtsgericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsreg.: Amtsgericht München,
HRB 125758, Geschäftsführer:  Maik Bachmann,  Olaf Erb,  Ralf Gebhart
FreeBSD-Dienstleistungen/-Produkte + mehr: http://www.secnetix.de/bsd
"I made up the term 'object-oriented', and I can tell you
I didn't have C++ in mind."
        -- Alan Kay, OOPSLA '97
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 02 Aug 2013 - 09:42:41 CEST

search this site