Grundlegendes zu NFS4 (Linux-Server)

26

NFS4 unter Linux hat mich ein bisschen gestört. Einige Informationen 'da draußen' scheinen mit anderen Informationen in Konflikt zu stehen, und andere Informationen scheinen schwer zu finden zu sein. Hier sind ein paar Dinge, die meine Aufmerksamkeit auf sich gezogen haben, hoffentlich kann jemand da draußen etwas Licht ins Dunkel bringen.

Diese Frage konzentriert sich ausschließlich auf NFS4 ohne Kerberos usw.

1. Exporte

Die exportsManpage enthält mehrdeutige Informationen zur Struktur von / etc / exports.

Zitat aus exports(5):

Außerdem kann jede Zeile nach dem Pfadnamen eine oder mehrere Angaben für Standardoptionen in Form eines Bindestrichs ("-") gefolgt von einer Optionsliste enthalten.

Die Optionsliste wird nur für alle nachfolgenden Exporte in dieser Zeile verwendet.

Was bedeutet "nur nachfolgende Exporte auf dieser Linie"?

1.2 fsid=0nicht mehr benötigt?

Ich habe nach fsid gesucht, als ich einen Kommentar in der Linux-NFS-Liste gefunden habe, der besagt, dass fsid = 0 nicht mehr erforderlich ist. Jetzt bin ich nur verwirrt, brauche ich es mit nfs4 oder nicht ?!

2. Nicht exportiertes Verzeichnis noch einbindbar

Angenommen, ich habe den folgenden Baum:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

Und ich habe die folgenden Einträge in diesem fstab-Eintrag:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

Und meine Exporte sind genau das:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

Und exportfs -arvzeigt:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

Warum kann ich das dann tun und bekomme keinen Fehler auf einem Client:

mount -t nfs4 server:/exp/users /tmp/test

Auch wenn /exp/usersnicht exportiert wird? Ich habe dieses Verzeichnis nicht exportiert, und obwohl der Inhalt von /dev/disk/by-label/usersnicht angegeben ist crossmnt, kann ich dennoch in das Verzeichnis schreiben. Alles, was ich dort schreibe, wird in das zugrunde liegende Verzeichnis geschrieben, /exp/usersdas angezeigt wird, wenn ich umount /exp/users; ls /exp/users..

3. Der seltsame Fall von showmount -d server

Wie von angegeben rpc.mountd(8), sollte dieser Befehl Verzeichnisse anzeigen, die entweder aktuell von Clients bereitgestellt werden, oder veraltete Einträge in /var/lib/nfs/rmtab, wie gelesen werden kann:

Der Daemon rpc.mountd registriert jede erfolgreiche MNT-Anforderung, indem er der Datei / var / lib / nfs / rmtab einen Eintrag hinzufügt. Beim Empfang einer UMNT-Anforderung von einem NFS-Client entfernt rpc.mountd einfach den entsprechenden Eintrag aus / var / lib / nfs / rmtab, sofern die Zugriffssteuerungsliste für diesen Export dem Absender den Zugriff auf den Export ermöglicht.

(...)

Beachten Sie jedoch, dass es nur wenige Garantien dafür gibt, dass der Inhalt von / var / lib / nfs / rmtab korrekt ist. Ein Client kann auch nach dem Aufrufen von UMNT weiterhin auf einen Export zugreifen. Wenn der Client neu gestartet wird, ohne eine UMNT-Anforderung zu senden, verbleiben veraltete Einträge für diesen Client in / var / lib / nfs / rmtab.

Nachdem ich das gelesen habe, frage ich mich sicherlich:

  1. Ist es nicht furchtbar unsicher, diese Art von Kundeninformationen preiszugeben?
  2. Sind Sie nicht ahnungslos, dass Serveradministratoren einen Rmtab mit vielen veralteten Clients haben müssen?
  3. Ist dies der Grund , dass die Kunden , die nfs4 Verzeichnisse mit Halterung mount -vzu sehen bekommen eine Ausgabe wie „nichts wurde angebracht“ , obwohl etwas wurde angebracht?

Ich habe noch viele andere Fragen zu nfs4, aber ich werde es für den Moment behalten .. :)

Trommelfeuer
quelle
Vielleicht mag die Exportliste Ihre seltsamen gebundenen Dateisysteme nicht. Versuchen Sie es zuerst mit / mnt / users ...
jirib
Hierbei handelt es sich um nfs4, für das ein "Pseudo-Dateisystem" erforderlich ist, dh eine Ein-Baum-Dateisystem-Hierarchie. Können Sie bitte klarstellen, was Sie meinen?
Trommelfeuer
Diese Wiki-Seite behauptet auch, dass fsid = 0 nicht mehr benötigt wird: wiki.linux-nfs.org/wiki/index.php/… , aber 'man exports ' impliziert immer noch, dass es benötigt wird
SystemParadox
1
Ich möchte sagen, dass ich diese Frage unterstütze. Wie Sie habe ich viele der gleichen Dinge beobachtet und habe die gleiche Frage und mehr. Es scheint ein verdammtes Durcheinander zu sein.
Zyklon
1
Zu viele Fragen in einem Beitrag. @drumfire, könntest du es bitte in einfachere Fragen-Posts aufteilen?
Victor Yarema

Antworten:

7

Große Fragen, unterstreicht einen größeren Punkt mit der Dokumentation IMO. Hier ist ein Versuch einer vollständigen Antwort:

Was bedeutet "nur nachfolgende Exporte auf dieser Linie"?

Ein Beispiel ist hier wahrscheinlich am einfachsten:

/export/stuff -rw 10.0.0.54 10.0.0.55

ist äquivalent zu:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

Wird fsid=0nicht mehr benötigt?

Dies hängt von Ihrem Anwendungsfall ab. Es sieht so aus, als würden Sie normale festplattenbasierte Dateisysteme aus dem Rest Ihrer Abfrage exportieren. In diesem Fall sollten Sie fsid=0diese löschen (wodurch sich in nfsv4 das Verhalten ändert und auf das Root-Dateisystem des Exports verweist).

Um dieses Verhalten zu ändern, entfernen Sie die Option no_subtree_check


rmtabSachen

  • Handelt es sich um rmtabein Sicherheitsrisiko?
    Ich denke, es hängt von Ihrem Anwendungsfall ab, um das zu beantworten. In meinem Netzwerk stellt es kein glaubwürdiges Informationsleck dar, aber ich kann Fälle erkennen, in denen es möglicherweise möglich ist.
  • Wirst rmtabdu nicht voll mit veralteten Einträgen sein?
    Möglicherweise ja, wieder abhängig von Ihrem Bereitstellungsszenario / Anwendungsfall.
  • Ist dies der Grund, warum einige Clients, die mount -vfälschlicherweise ausgeführt werden, "nichts wurde bereitgestellt" sehen?
    Ich bin noch nicht darauf gestoßen
CraigJPerry
quelle