nfs: Links auf dem Server folgen? WIE?

Post Reply
Message
Author
inde
Posts: 15
Joined: 31. Jan 2005 16:45

nfs: Links auf dem Server folgen? WIE?

#1 Post by inde »

Hallo!

Irgendwo hatte ich mal gelesen, dass es für "schreibfaule", so wie ich einer bin, möglich wäre, auf dem NFS-Server einfach ein Verzeichnis /exports anzulegen und die Verzeichnisse die dann freigegeben werden sollen einfach dahin zu verlinken. Also ausprobiert:

in meiner /etc/exports steht: /exports 192.168.0.101(ro,no_root_squash,sync)

in der /etc/fstab vom Client steht: [hostname]:/exports /mnt/imports nfs ro,auto,users 0 0

Der mount klappt auch. Ich sehe alle entsprechenden Links im Verzeichnis. Nur werde ich dann "falsch" weiterverlinkt. Nämlich nicht zum Verzeichnis auf dem Server, sondern zu dem auf dem Client. Wenn das Verzeichnis auf dem Client nicht existiert, habe ich einen toten link. Wie kann ich das ändern? Wie bringe ich mein NFS dazu, den links auf dem Server zu folgen?

Hab die links mit ln -s gesetzt. Darin wirds wohl liegen. Nur leider kann ich keine hard links setzen. Das wäre mit Verzeichnissen nicht möglich.

Eingesetzte Distri: Ubuntu Hoary, (Debian Abkömmling)

AlexMH

#2 Post by AlexMH »

Hi,

meines Wissens nach ist das mit NFS nicht moeglich. Du kannst nur innerhalb des NFS exportierten Laufwerkes verlinken. Und dann natuerlich auch nur mit relativen Links, da ja der Pfad auf den Clients meist ein anderer ist.

Gruss,
Alex

inde
Posts: 15
Joined: 31. Jan 2005 16:45

#3 Post by inde »

Hmm, das wir uns jetzt richtig verstehen:

Auf dem Server gibt es ein Verzeichnis das heißt /exports. Das ist freigegeben. Weitere Verzeichnisse sind dorthin verlinkt. Ich habe also ein "echtes" Verzeichnis freigegeben und keine Links. Genauso wird es auf dem Client auch eingebunden.

Und genau SO funktioniert es nicht? Bedeutet das ich muss jedes Verzeichnis einzeln freigeben? :-( Find ich ziehmlich umständlich.

Gibt es dafür eine Alternative? Samba zum Beispiel?

AlexMH

#4 Post by AlexMH »

Hi,

ich weiss nicht ob ich dich richtig verstehe, aber folgendermassen funktioniert das nicht: Wenn du ein Verzeichnis auf dem Server freigibst und darin symbolische Links auf Verzeichnisse AUSSERHALB des freigegebenen Pfades setzt, dann kann kein Client darauf zugreifen.

Der Grund ist folgender: Symbolische Links werden clientseitig aufgeloest. Wenn also in deinem freigegebenen Verzeichnis '/export' ein Link auf '../usr' gesetzt ist, dann wird jeder Client nicht auf dem '/usr' Verzeichnis des Servers sondern in seinem eigenen '/usr' Verzeichnis landen. NFS loest also keine Links auf, sondern das macht der Client.

Du musst die ganze Geschichte einfach umdrehen. Alles was du freigeben willst in ein Verzeichnis und dann die Daten auf dem Server an die richtigen Stellen verlinken.

Gruss,
Alex

inde
Posts: 15
Joined: 31. Jan 2005 16:45

#5 Post by inde »

Ja, genauso meinte ich das. Verdammt! Blöd das dass nicht so geht. Die ganze Sache umdrehen, wäre sicher auch eine Lösung. aber ist das sinnvoll? also so wichtige Verzeichnisse wie das /usr zum Beispiel? Ist das sagen wir mal "üblich"?

AlexMH

#6 Post by AlexMH »

> aber ist das sinnvoll? also so wichtige Verzeichnisse wie das /usr zum Beispiel? Ist das sagen wir mal "üblich"?

Nein. Da auf dem Server nur die allernoetigste Software installiert sein sollte, wuerde es keinen Sinn machen den Clients das /usr Verzeichnis des Servers zur Verfuegung zu stellen. Ausserdem ist das Sicherheitstechnisch eine Riesenkatastrophe, da ja dann ein gehackter Client Systemdaten auf dem Server veraendern koennte. Wenn man NFS verwendet, dann muss man seinen Clients absolut vertrauen, da ja NFS die UserIDs des Clients akzeptiert ohne irgendeine Pruefung vorzunehmen. Im schlimmsten Fall ist das die Uid 0 und damit root. Root Zugriff von Clients kann man allerdings abschalten.

Wenn du Thin Clients einrichten moechtest, die komplett aus dem Netzwerk booten und alle Daten vom Server holen, dann wuerdest du eher in einem Unterverzeichnis des Servers eine UNIX-Umgebung (oder fuer jeden Rechner eine) einrichten und diese dann an die entsprechenden Clients exportieren.

Gruss,
Alex

Gast

#7 Post by Gast »

> aber ist das sinnvoll? also so wichtige Verzeichnisse wie das /usr zum Beispiel? Ist das sagen wir mal "üblich"?

Oft würde so etwas ja auch nicht funktionieren, es setzt ja voraus, das NFS-Server und Clients gleiche Architektur (ähnliche CPU) haben.

#####

Verzeichnis fuer einen neuen Client aus einem Vorlage-Verzeichnis mittels cp -alR als harte Links generieren (gemeinsame Files), private natürlich "richtig" kopieren.
Es geht auch ohne wirklich beschreibbare Freigaben: etwas RAM-Disk und logging evtl. über Netzwerk.
Richtige Arbeitsstation oder nur (X)Terminal -- das gibt erstmal den Grundausschlag für das Konzept.
Etwas kontraproduktiv ist in jedem Fall der Linux-Kernel-NFS-Daemon, mit dem User-Space-NFS-Daemon bist Du flexibler (Für Diskless-Client-Gehversuche auf jeden Fall besser). Kernel-NFS ist natürlich schneller und mit extra Partition(en) sollte er halbwegs brauchbar sein. Hat aber auch Macken (bei mir hilft nur ein reboot) wird halt alles Windos-like ;-)

Probier doch einfach mal LTSP um mit der ganzen Geschichte etwas warm zu werden.

Gast

#8 Post by Gast »

> Im schlimmsten Fall ist das die Uid 0 und damit root. Root Zugriff von Clients kann man allerdings abschalten.

Die Clients benötigen aber root-Zugriffe (Wenn nicht RAM-Disk)!

Post Reply