Hallo Heiko,
Am Donnerstag 04 März 2010 schrieb Heiko Schlittermann:
ich versuche gerade von einem Fedora 10 Client (der unter coLinux läuft, falls das irgendwie von Bedeutung ist) auf eine NFS Freigabe zu schreiben. Aber egal wer ich gerade bin (root, normaler Benutzer), die UID/GID der neu erzeugten Datei ist immer nobody:nogroup.
(…)
Hier die Schritte auf dem Clienten zum Nachvollziehen: # mount serverip:/exported/filesystem /mnt/server $ cd /mnt/server/tmp tmp hat die Berechtigung -rwxrwxrwx $ touch test $ ls -l test -rw-r--r-- 1 65534 65534 0 4. Mär 11:43 test nobody nogroup
Eigentlich ein Verhalten, das als „root_squash“ bekannt ist, und, wenn es für alle Nutzer gilt, dann als „all_squash“. Default ist beim Export „root_squash“. Das dürfte für normale Nutzer nicht gelten, insofern etwas eigentartig.
Das weiß ich schon, hätte es aber natürlich noch erwähnen müssen, denn die Nicht-Beachtung dieser Optionen ist ja gerade das, was ich hier nicht verstehe. Ausgangspunkt der ganzen Suche ist, dass ich ein root-fs für einen anderen Rechner von der coLinux Maschine (Fedora 10) auf den Server (Debian 4) übertragen wollte. Dazu sollten natürlich alle Nutzer und Nutzerrechte erhalten bleiben. Deshalb habe ich natürlich zuerst "no_root_squash" konfiguriert. Der root konnte trotzdem noch nicht auf das Serververzeichnis zugreifen. Da habe ich angefangen, zum Test Dateien mit touch zu erzeugen. Das hat erst funktioniert, nachdem ich das Verzeichnis für alle zum Schreiben freigegeben habe. Daraufhin habe ich dann auch als normaler Nutzer den Test gemacht, wieder mit dem Ergebnis, dass die Datei nobody/nogroup gehört.
Nächste Option war dann folgerichtig "no_all_squash". Aber auch das ohne Erfolg.
Eigentlich kann der Client den Owner nicht änden, so lange er nicht root-Rechte hat. Und diese helfen auch nur, wenn eben „no_root_squash“ beim Export gesetzt ist.
- Vor dem touch war die Datei noch nicht vorhanden? (eventuell durch ein vorheriges touch als root)
Die Datei habe ich vorher jedesmal gelöscht oder eine andere gewählt.
-> ein besserer Test wäre hier „mkdir test“, da gäbe es deutlichere Anzeichen bei Mißerfolg.
Was gibt es denn da für deutlichere Anzeichen?
- Was macht ein „mkdir /tmp/test“ als der selbe Nutzr, der „mkdir /mnt/server/tmp/test“ macht?
?? Wo soll ich den ersten Befehl ausführen?
Und wie gesagt: Das ganze Prozedere liefert genau die erwarteten Ergebnisse, wenn der Client, der das Verzeichnis mounted ein openSUSE 10.3 ist. Die Serverkonfiguration sollte also eigentlich korrekt sein.
Ich kann mir eigentlich nur vorstellen, dass der NFS Client von Fedora 10 schon einige NFS4 Eigenschaften nutzt (was unwahrscheinlich ist, da nfs4 beim Mounten explizit ausgewählt werden muss). Dort gibt es aber einen Dämon, der die Nutzer umschreibt (Name müsste ich morgen nachgucken). Der ist nur für nobody/nogroup konfiguriert.
Eine andere Alternative wären die Sicherheitseinstellungen, obwohl SELinux anscheinend gar nicht aktiviert ist.
Ich hab' keine weitere Idee.
Viele Grüße Uwe