linux-l: merkwürdiges NFS Rechte - Problemchen

Steffen Dettmer steffen at dett.de
Mo Apr 16 19:18:58 CEST 2001


Ich rätsel schon ne ganze Weile unheimlich erfolgslos an einem
NFS Problem. Ich erklär mal die Lage. Es gibt einen NFS-Server,
nennen wir ihn mal "liza", und clients, z.B. einen Webserver. Es
läuft NIS, "liza" ist das auch slave. NIS funktioniert prima,
User und Gruppen überall richtig und schick.

Liza hatte knfs, exportierte eine Share an den Webserver.
Der Webserver (Apache) läuft als User "www-run". Der User ist
Mitglied in allen "wichtigen" Gruppen, z.B. "users". 

Es gibt ein u.A. Verzeichnis mit Bilder:

-rw-r-----   1 steffen  users         681 Dec 27 18:02 images/mi_home.gif

Der Webserver kann das über Gruppenrechte lesen. Macht man auf
dem WWW-Server ein "su - www-run", kann man mit "file" oder so
das Bild betrachen, sprich lesen. 

Der Apache öffnet bei einem entsprechenden Request das File (das
klappt wohl noch), aber der Childprocess crasht dann (bus error).
In Liza's logfile findet sich:

liza kernel: fh_verify: images/mi_home.gif permission failure, acc=4, error=13

(aber nicht, wenn man das Bild "per Hand" öffnet, nur wenn's der
Webserver ist!). Das nette ist, manchmal kann der Apache das Bild
aber auch korrekt senden (der Browser zeigt's manchmal an). Die
Wahrscheinlichkeit hierfür ist jedoch gering (10%?). 

Beim Apache stirbt das Child, und der Request wird wohl gleich
ans nächste gereicht, jedenfalls sterben dann immer gleich viele
(alle?) Kinder:

[01:52:37 2001] [notice] child pid 20715 exit signal Bus error (7)
[01:52:37 2001] [notice] child pid 20714 exit signal Bus error (7)
[01:52:37 2001] [notice] child pid 20713 exit signal Bus error (7)
[01:52:37 2001] [notice] child pid 20712 exit signal Bus error (7)

was dann zu folgendem Verhalten führt:

[01:53:48 2001] [info] server seems busy, (you may
	need to increase StartServers, or Min/MaxSpareServers), spawning
	8 children, there are 0 idle, and 4 total children
[01:53:48 2001] [notice] child pid 25599 exit signal
	Bus error (7)
[01:53:48 2001] [notice] child pid 25598 exit signal
	Bus error (7)
[01:53:49 2001] [info] server seems busy, (you may
	need to increase StartServers, or Min/MaxSpareServers), spawning
	16 children, there are 2 idle, and 10 total children

Na, eben Folgefehler. Ich habe knfs (von SuSE 7.0) im Verdacht
gehabt, und das gegen Userspace-NFS getauscht. Die
Versionsnummern heißen:

liza:~ # rpm -qa | grep nfs
knfsd-991001-130
nfsserv-2.2beta47-118

Na ja, beta47?! Toll. Jedenfalls loggt der Userspace-NFS-Server
kein "fh_verify" error mehr, aber das (Fehl-) Verhalten ist das
gleiche. 

Es funktioniert jedoch, wenn ich die Directories lokal (mit
gleichen Rechten) habe (einfach mal lokal kopiert und geht).
Setze ich world-readble, funktioniert es auch. Das Problem tritt
also auf, wenn der Apache über Gruppenrechte lesen kann. Sehr
merkwürdig.

Ach so, der NFS-Client (also der Webserver) verwendete autofs
(autofs-4.0.0pre7-33), und ich habe das auch mal mit manuellem
mounten probiert (kernel bei beiden Maschinen: Linux version
2.2.16-SMP, SuSE 7.0 Version).

Die Hardware von NFS-Server und Webserver ist inzwischen komplett
getauscht (waren vorher andere Maschinen, jetzt beides
Dual-Pentium III (Coppermine). 

Zusammenfassung: Problem tritt bei NFS auf, wenn über
Gruppenrechte gearbeitet wird, aber nicht beim normalen "open",
sondern bei mmap (glaube ich, habe leider kein strace mehr zur
Hand). Damit ist das Problem von einer Shell aus nicht
provozierbar. Zum Kompott klappt es auch vom Apache aus manchmal
(in der Praxis: bei jedem Reload kommt null bis ein Bild dazu,
durch den Browser-Cache sind dann nach dem 20 oder 100sten Reload
dann alle Bilder da).

Hat jemand eine Idee oder einen Hinweis? Ich weiß jetzt nicht
mehr weiter. 

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l