Назад | Перейти на главную страницу

Понимание NFS4 (сервер Linux)

Меня немного беспокоила NFS4 в Linux. Некоторая информация "извне" кажется противоречащей другой, а другую информацию найти трудно. Вот пара вещей, которые привлекли мое внимание, надеюсь, кто-нибудь сможет пролить свет на это.

Этот вопрос касается исключительно NFS4 без Kerberos и т. Д.

1. Экспорт

Есть неоднозначная информация в exports справочную страницу о структуре / etc / 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.

Прочитав это, я наверняка задаюсь вопросом:

  1. Разве не ужасно небезопасно просто раскрывать этот тип информации о клиенте;
  2. Известно, что администраторы серверов обязательно должны иметь rmtab с много устаревших клиентов;
  3. Это причина того, что клиенты, монтирующие каталоги nfs4 с mount -v увидеть вывод типа "ничего не смонтировано", хотя что-то был установлен?

У меня есть много других вопросов по nfs4, но пока я оставлю их здесь .. :)

Отличные вопросы, подчеркивает более важный момент в документации IMO. Вот попытка полного ответа:

Что означает «последующий экспорт только по этой строке»?

Вот пример, наверное, самый простой:

/export/stuff -rw 10.0.0.54 10.0.0.55

эквивалентно:

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

Является fsid=0 больше не требуется?

Это зависит от вашего варианта использования. Похоже, вы экспортируете обычные файловые системы на основе диска из остальной части вашего запроса, в этом случае вам лучше отказаться fsid=0 (который в nfsv4 изменяет поведение для ссылки на корневую файловую систему экспорта).

Чтобы изменить это поведение, удалите параметр no_subtree_check


rmtab-связанные вещи

  • Обработка rmtab угроза безопасности?
    Я предполагаю, что это зависит от вашего варианта использования, чтобы ответить, что в моей сети нет достоверной утечки информации, но я могу видеть случаи, когда это потенциально могло бы быть.
  • Не будет rmtab быть полными устаревших записей?
    Потенциально да, опять же, в зависимости от сценария / варианта использования развертывания.
  • Вот почему некоторые клиенты работают mount -v ошибочно видите "ничего не смонтировано"?
    Я еще не сталкивался с этим