PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sarge: Apache / SuExec / fcgi / passwd/group Probleme?



rep
12.02.08, 19:18
Hallo Leute,

bitte haltet mich nun nicht für bescheuert, und bitte fragt nach wenn Ihr was nicht versteht, das Problem kann ich selbst schwer begreifen oder beschreiben. Es ist fast schon so komisch, das es eigentlich schon wieder nicht sein kann.

Ich habe eine Server aus den "standard" Paketen eines Debian Sarge Systems erstellt. Der Apache mit selbstkompliertem PHP4 und PHP5 als fcgi. Dies wird in jedem VHost über "Action" von SuExec über einen php-wrapper Skript gestartet. Ich denke zwar nicht das genau das eine Rolle spielen muss, aber zur Vollständigkeit...

So, nun habe ich viele Kunden auf dem Rechner, alle haben wegen der SuExec Variante einen eigenen eine eignen benuternamen/uid, und eine eignen Gruppe/gid.

Da ich so wenig Rechte wie möglich setzen wollte, bin ich bei 0640 angekommen, und musste dann den Benutzer des Webservers Apache (www-data) in die Gruppe des Benutzers setzen:

hier mal ein Beispiel an zwei Benutzern:

/etc/passwd
www-data:x:33:33:www-data:/var/www:/bin/sh
user1:x:1001:1001::/home/user1:/bin/false
user2:x:1002:1002::/home/user2:/bin/false

/etc/group
www-data:x:33:
user1:x:1001:www-data
user2:x:1002:www-data

So, nun konnten Dateien wie die index.html ausgeliefert werden, wenn Sie folgende Rechte haben:

-rw-r----- 1 user1 user1 2708 2008-02-11 21:29 index.html


Bei gewissen Konstelationen hatte ich aber Probleme, ein Hostingkunde machte Probleme und einer nicht...

rep
12.02.08, 19:19
Und zwar war es ein Kunde der weit unten in der group stand, ich habe einfach ins Blaue hinein überlegt ob das ein Grund sein kann, und in der Tat, ich fasse es mal zusammen....

rep
12.02.08, 19:26
Ich habe die Gruppe in der /etc/group dann so lange an eine andere Stelle kopiert bis alles ging. Und, ja, es lag wirklich an der Stelle. Dann habe ich weiter experimentiert....

Ich habe eine neue Gruppe weiter oben in der /etc/group angelegt, und damit geht die Gruppe des Hostingkunden ja wieder eins nach unten. Das war kein Problem...
Dann habe ich diese neue Gruppe ebenfalls den ":www-data" Eintrag hinzugefügt, und sie da, das Problem war wieder da.

Zusammen ist es also ein Problem wenn von oben nach unten gelesen die Anzahl der Gruppen die als Mitglied www-data haben, eine gewisse Anzahl übersteigt. Ich habe mal grep und cat genutzt um genau zu zählen, und mit der Gruppe www-data selbst (standard Debain Sarge) ist es der 33. Eintrag, der www-data enthält. Ab diesen Eintrag gehen alles Gruppen nicht mehr.

Nicht mehr gehen, bedeutet das der Webserver die Daten nicht mehr ausliefern kann, die die 0640 Rechte gesetzt haben.

Und das "komische" wie ich finde, ist das die 33 die gid und uid des www-data sind. Wenn das ein Zufall ist, dann weiß ich es aber auch nicht.

Ich werde nun mal experimentieren... da es aber ein Liveserver ist, muss ich veruschen das nachzubauen...

Wenn jemand schon bis hierher eine Idee hat, einen Lösungsansatz oder so, dann immer her damit...

Mit dem Kommando "id user1" bzw "id www-data" sieht man das die Gruppe aber vom System erkannt wird, und der Benuter www-data in der Gruppe des Hostingkunden erkannt wird. So sagt mir der Befehl "id www-data | grep user2" ne Zeile zurück, ist also mit drin :-)

Gruß
rep

rep
12.02.08, 19:27
apache2 - 2.0.54-5sarge2
apache2-mpm-prefork - 2.0.54-5sarge2

rep
13.02.08, 20:46
Ich habe mal gerade ein Source Apache 2.2.8 installiert, und das Problem war genau das gleiche... liegt es vielleicht doch am System bzw. am Kern?

Keiner eine Idee?

rep
14.02.08, 20:18
und wieder eine info, ich habe mal gedachte, wenn es nicht der Apache ist, dann eventuell Das system selbst, ich bin also mal als www-data abgetaucht

su - www-data

und habe kontrolliert ob das stimmt, mittels "id" und ich war ab dem Zeitpunkt www-data. Dann bin ich zur besagten index.html und konnte sie lesen.

Gegenkontrolle, ich habe die Rechte geändert auf (0600):

-rw------- 1 user1 user1 2708 2008-02-11 21:29 index.html

und dann konnte ich mittels "less" oder sonst wie die Datei nicht mehr lesen, also auf der Konsole geht alles so, wie es sein soll. Komisch, wie ich finde.


Jemand noch eine Idee wie der Apache die Rechte prüft, oder was ich für die Fehlerfindung machen kann?