Frage Verständnis von NFS4 (Linux-Server)


Ich war ein bisschen gestört von NFS4 unter Linux. Einige Informationen "da draußen" scheinen mit anderen Informationen zu kollidieren, und andere Informationen scheinen schwer zu finden. Hier sind ein paar Dinge, die meine Aufmerksamkeit erregt haben, hoffentlich kann jemand da draußen etwas Licht in die Sache bringen.

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

1. Exporte

Es gibt mehrdeutige Informationen in der exports Handbuch zur Struktur von / etc / exports.

Um zu zitieren exports(5):

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

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

Was bedeutet "nachfolgende Exporte nur auf dieser Linie"?

1.2 fsid=0 nicht mehr benötigt?

Ich habe nach Fsid gesucht, als ich eine gefunden habe Kommentar zur linux-nfs-Liste Die Angabe von fsid = 0 ist nicht mehr erforderlich. Jetzt bin ich nur verwirrt, brauche ich es mit nfs4 oder nicht ?!

2. Nicht exportiertes Verzeichnis noch mountbar

Sagen wir, ich habe folgenden Baum:

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

Und ich habe folgende 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 -arv zeigt an:

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

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

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

Obwohl /exp/users wird nicht exportiert? Ich habe dieses Verzeichnis nicht exportiert, und obwohl ich den Inhalt von nicht sehe /dev/disk/by-label/users es sei denn ich spezifiziere crossmntIch kann immer noch in das Verzeichnis schreiben. Alles, was ich dort schreibe, geht in das darunterliegende Verzeichnis von /exp/users was man sehen kann, wenn ich umount /exp/users; ls /exp/users..

3. Der seltsame Fall von showmount -d server

Wie gesagt von rpc.mountd(8)Dieser Befehl sollte Verzeichnisse anzeigen, die derzeit von Clients oder veralteten Einträgen in Clients bereitgestellt werden /var/lib/nfs/rmtab, wie zu lesen ist:

Der rpc.mountd-Daemon registriert jede erfolgreiche MNT-Anfrage, indem er einen Eintrag zur Datei / var / lib / nfs / rmtab hinzufügt. Wenn eine UMNT-Anforderung von einem NFS-Client empfangen wird, entfernt rpc.mountd einfach den übereinstimmenden Eintrag aus / var / lib / nfs / rmtab, solange die Zugriffssteuerungsliste für diesen Export es diesem Absender erlaubt, auf den Export zuzugreifen.

(...)

Beachten Sie jedoch, dass nur wenig garantiert werden kann, dass der Inhalt von / var / lib / nfs / rmtab korrekt ist. Ein Client kann auch nach dem Aufruf 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.

Nach dem Lesen frage ich mich:

  1. Ist es nicht furchtbar unsicher, diese Art von Kundeninformationen bloßzustellen?
  2. Sind nicht unbemerkte Server Admins verpflichtet, eine Rmtab mit einem Menge von alten Kunden;
  3. Ist dies der Grund, dass Clients, die NFS4-Verzeichnisse mit mounten mount -v bekomme Ausgabe wie "nichts wurde montiert" obwohl etwas war montiert?

Ich habe eine Menge anderer Fragen bezüglich nfs4, aber ich werde es im Moment behalten. :)


25
2018-05-15 10:20


Ursprung


Vielleicht mag Export-Liste nicht Ihre seltsamen binden eingehängten Dateisysteme. Probieren Sie zuerst mit / mnt / users ... - jirib
Dies ist ungefähr nfs4, was ein "Pseudo-Dateisystem" erfordert, d. H. Eine Ein-Baum-Dateisystem-Hierarchie. Kannst du bitte klarstellen, was du meinst? - drumfire
Diese Wiki-Seite behauptet auch, dass fsid = 0 nicht mehr benötigt wird: wiki.linux-nfs.org/wiki/index.php/..., aber "man exportiert" bedeutet immer noch, dass es erforderlich ist - SystemParadox
Ich möchte sagen, dass ich diese Frage unterstütze. Wie du habe ich viele der gleichen Dinge beobachtet, und habe die gleiche Frage und mehr. Es scheint wie ein Chaos. - Cyclone
Zu viele Fragen in einem Beitrag. @drumfire, könntest du es bitte in separate, einfachere Fragen-Posts aufteilen? - Victor Yarema


Antworten:


Tolle Fragen, hebt einen größeren Punkt mit der Dokumentation IMO hervor. Hier ist ein Versuch einer vollständigen Antwort:

Was bedeutet "nachfolgende Exporte nur auf dieser Linie"?

Ein Beispiel ist wahrscheinlich am einfachsten hier:

/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)

Ist fsid=0 nicht mehr benötigt?

Dies hängt von Ihrem Anwendungsfall ab. Es sieht so aus, als ob Sie normale datenträgerbasierte Dateisysteme aus dem Rest Ihrer Abfrage exportieren. In diesem Fall sollten Sie die Datei am besten löschen fsid=0 (was in nfsv4 das Verhalten ändert, um auf das Root-Dateisystem des Exports zu verweisen).

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


rmtabbezogenen Sachen

  • Ist die Handhabung von rmtab ein Sicherheitsrisiko?
    Ich schätze, es hängt von Ihrem Anwendungsfall ab, das zu beantworten. In meinem Netzwerk stellt es kein glaubwürdiges Informationsleck dar, aber ich kann Fälle sehen, in denen es potenziell möglich ist.
  • Gewohnheit rmtab voller veralteter Einträge?
    Möglicherweise ja, wiederum abhängig von Ihrem Bereitstellungsszenario / Anwendungsfall.
  • Aus diesem Grund laufen einige Clients mount -v fälschlicherweise "nichts wurde montiert"?
    Ich bin noch nicht darauf gestoßen

7
2017-09-02 23:52