Trochę mnie niepokoi NFS4 w systemie Linux. Niektóre informacje „tam” wydają się kolidować z innymi informacjami, a inne informacje wydają się trudne do znalezienia. Oto kilka rzeczy, które zwróciły moją uwagę, mam nadzieję, że ktoś na zewnątrz może rzucić na to trochę światła.
To pytanie dotyczy wyłącznie NFS4 bez Kerberos itp.
1. Eksportuje
Na stronie exports
podręcznika znajdują się niejednoznaczne informacje na temat struktury pliku / etc / export.
Cytat z exports(5)
:
Ponadto każda linia może mieć jedną lub więcej specyfikacji domyślnych opcji po nazwie ścieżki, w postaci myślnika („-”), a następnie listy opcji.
Lista opcji jest używana tylko dla wszystkich kolejnych eksportów w tym wierszu.
Co oznacza „późniejszy eksport tylko na tej linii”?
1.2 fsid=0
nie jest już wymagane?
Szukałem fsid, kiedy znalazłem komentarz na liście linux-nfs stwierdzający, że fsid = 0 nie jest już wymagany. Teraz jestem tylko zdezorientowany, czy potrzebuję go z nfs4 czy nie ?!
2. Nieeksportowany katalog nadal można zamontować
Powiedz, że mam następujące drzewo:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
I mam następujące wpisy w tym wpisie fstab:
/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
A mój eksport jest dokładnie taki:
/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)
I exportfs -arv
pokazuje:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
Dlaczego więc mogę to zrobić i nie mam błędu na kliencie:
mount -t nfs4 server:/exp/users /tmp/test
Nawet jeśli /exp/users
nie jest eksportowany? Nie wyeksportowałem tego katalogu i chociaż nie widzę zawartości, /dev/disk/by-label/users
chyba że podam crossmnt
, nadal mogę pisać do katalogu. Wszystko, co tam piszę, przechodzi do katalogu podstawowego, /exp/users
którego można zobaczyć, gdy umount /exp/users; ls /exp/users
…
3. Dziwny przypadek showmount -d server
Jak stwierdzono przez rpc.mountd(8)
, to polecenie powinno wyświetlać katalogi, które są obecnie montowane przez klientów lub nieaktualne wpisy /var/lib/nfs/rmtab
, jak można przeczytać:
Demon rpc.mountd rejestruje każde pomyślne żądanie MNT, dodając wpis do pliku / var / lib / nfs / rmtab. Po otrzymaniu żądania UMNT od klienta NFS rpc.mountd po prostu usuwa pasujący wpis z / var / lib / nfs / rmtab, o ile lista kontroli dostępu dla tego eksportu pozwala temu nadawcy uzyskać dostęp do eksportu.
(...)
Należy jednak pamiętać, że niewiele można zagwarantować, że zawartość / var / lib / nfs / rmtab jest dokładna. Klient może nadal uzyskiwać dostęp do eksportu nawet po wywołaniu UMNT. Jeśli klient uruchomi się ponownie bez wysyłania żądania UMNT, pozostaną nieaktualne wpisy dla tego klienta w katalogu / var / lib / nfs / rmtab.
Po przeczytaniu tego z pewnością zastanawiam się:
- Czy ujawnienie tego rodzaju informacji o kliencie nie jest strasznie niebezpieczne;
- Nie są nieświadomi administratorzy serwerów, którzy muszą mieć rmtab z wieloma nieaktualnymi klientami;
- Czy to jest powód, dla którego klienci, którzy montują katalogi nfs4,
mount -v
widzą wyjście w stylu „nic nie zostało zamontowane”, nawet jeśli coś zostało zamontowane?
Mam wiele innych pytań dotyczących nfs4, ale na razie to zrobię ... :)