Мене трохи турбує NFS4 в Linux. Частина інформації "там", здається, суперечить іншій інформації, а іншу інформацію, здається, важко знайти. Ось ось кілька речей, які привернули мою увагу, сподіваюся, хтось там може пролити трохи світла на це.
Це питання зосереджується виключно на NFS4 без Kerberos тощо.
1. Експорт
На сторінці розміщена неоднозначна інформація exports
про структуру / тощо / експорту.
Цитувати з exports(5)
:
Крім того, кожен рядок може мати одну або більше специфікацій для параметрів за замовчуванням після назви шляху у вигляді тире ("-"), а потім списку опцій.
Список опцій використовується лише для всіх наступних експортів на цій лінії.
Що означає "лише наступний експорт на цій лінії"?
1.2 fsid=0
більше не потрібно?
Я шукав fsid, коли знайшов коментар до списку linux-nfs із зазначенням, що fsid = 0 більше не потрібен. Тепер я просто розгублений, мені це потрібно з nfs4 чи ні ?!
2. Неекспортований каталог, який все ще можна встановити
Скажіть, у мене є таке дерево:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
У цій статті 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
А мій експорт саме такий:
/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)
І exportfs -arv
показує:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
Тоді чому я можу це зробити і не помилитися з клієнтом:
mount -t nfs4 server:/exp/users /tmp/test
Хоча /exp/users
не експортується? Я не експортував цей каталог, і хоча я не бачу вмісту, /dev/disk/by-label/users
якщо не вказати crossmnt
, я все ще можу записатись у каталог. Все, що я там пишу, йде в основний каталог, /exp/users
який можна побачити, коли я umount /exp/users; ls /exp/users
..
3. Незвичайний випадок showmount -d server
Як зазначається в rpc.mountd(8)
цій команді, ця команда повинна відображати каталоги, які наразі встановлені клієнтами, або застарілі записи /var/lib/nfs/rmtab
, як можна прочитати:
Демон rpc.mountd реєструє кожен успішний запит MNT, додаючи запис у файл / var / lib / nfs / rmtab. Отримуючи запит UMNT від клієнта NFS, rpc.mountd просто видаляє відповідні записи з / var / lib / nfs / rmtab, якщо список контролю доступу для цього експорту дозволяє цьому відправника отримати доступ до експорту.
(...)
Однак зауважте, що мало гарантується, що вміст / var / lib / nfs / rmtab є точним. Клієнт може продовжити доступ до експорту навіть після виклику UMNT. Якщо клієнт перезавантажується, не надсилаючи запит UMNT, застарілі записи для цього клієнта залишаються в / var / lib / nfs / rmtab.
Прочитавши це, я напевно дивуюсь:
- Хіба не страшно небезпечно просто викривати цей тип інформації про клієнтів;
- Не обізнані адміністратори сервера, які зобов'язані мати rmtab з великою кількістю несвіжих клієнтів;
- Чи це причина того, що клієнти, які монтують каталоги nfs4,
mount -v
отримують можливість бачити вихідний на зразок "нічого не встановлено", хоча щось було встановлено?
У мене є багато інших запитань щодо nfs4, але я поки що про це продовжую .. :)