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 exports
Manpage 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=0
nicht 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 -arv
zeigt:
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/users
nicht exportiert wird? Ich habe dieses Verzeichnis nicht exportiert, und obwohl der Inhalt von /dev/disk/by-label/users
nicht angegeben ist crossmnt
, kann ich dennoch in das Verzeichnis schreiben. Alles, was ich dort schreibe, wird in das zugrunde liegende Verzeichnis geschrieben, /exp/users
das 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:
- Ist es nicht furchtbar unsicher, diese Art von Kundeninformationen preiszugeben?
- Sind Sie nicht ahnungslos, dass Serveradministratoren einen Rmtab mit vielen veralteten Clients haben müssen?
- Ist dies der Grund , dass die Kunden , die nfs4 Verzeichnisse mit Halterung
mount -v
zu 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 .. :)