Вопрос или проблема
Я скопировал настройку NFS сервера/клиента дословно у кого-то и испытываю трудности в понимании того, как это работает. Вот /etc/exports:
/export *(rw,fsid=0,crossmnt,insecure,async,no_subtree_check,sec=krb5p:krb5i:krb5)
/export/home *(rw,insecure,async,no_subtree_check,sec=krb5p:krb5i:krb5)
Клиентские машины используют autofs для монтирования домашних директорий пользователей по требованию. Вот auto.home:
* -fstype=nfs4,rw,soft,sec=krb5 192.168.0.2:/home/&
Это работает хорошо. Тем не менее, экспортирование /export
кажется ненужным, поэтому я закомментировал эту строку в конфигурации сервера. Теперь автомонтирование на клиентах не работает.
Вопросы
- Почему
/export/home
требует, чтобы/export
тоже был экспортирован? - Должны ли параметры безопасности для
/export
и/export/home
быть одинаковыми? - Почему auto.home читает
192.168.0.2:/home/&
вместо192.168.0.2:/export/home/&
? Кажется, что это вообще не должно работать.
Вы используете NFS версии 4 (nfs4), который экспортирует псевдо-файловую систему, а не множество отдельных файловых систем.
Это указано на сервере NFS в /etc/exports
с помощью fsid=0
, и в вашем случае называется /export (хотя это можно назвать как угодно). Вот почему вы не можете удалить или закомментировать эту строку.
На клиенте NFS этот родитель (в вашем случае /export
) виден как /
(корень экспортируемой файловой системы), поэтому automounter использует /home
.
Явный экспорт псевдо-файловой системы (то есть с опцией fsid=0
) на самом деле не обязателен.
Отсутствие этого имеет два эффекта.
Во-первых, это меняет пути, по которым файловые системы экспортируются внутри псевдо-файловой системы. Файловые системы будут просто экспортироватся, используя их абсолютные пути. Поэтому, если вы попытались бы смонтировать 192.168.0.2:/export/home
на вашем клиенте, это бы сработало. И если бы вы смонтировали 192.168.0.2:/
, скажем, в /mnt
, тогда вы смогли бы получить доступ к файловой системе через /mnt/export/home
.
Во-вторых, это означает, что вы не можете задать другие параметры для экспорта псевдо-файловой системы. Я выполнил команду на сервере, где /home
экспортируется без явной записи для псевдо-файловой системы, после того как клиент смонтировал файловую систему /home
:
$ cat /proc/fs/nfsd/exports
# Version 1.1
# Path Client(Flags) # IPs
/home $2001:db8::ff:1(rw,root_squash,sync,wdelay,no_subtree_check,uuid=fec4d53c:3e73d378:00000000:00000000,sec=390003)
/ $2001:db8::ff:1(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,fsid=0,sec=390003:390004:390005:1)
Обратите внимание на значение опции sec=
для синтезированного экспорта псевдо-файловой системы: оно позволяет неаутентифицированный доступ. Клиент смог бы просматривать псевдо-файловую систему и обнаруживать пути экспортированных файловых систем (похожее на NFSv3, который позволял неаутентифицированным клиентам просматривать список экспортированных файловых систем через MNT-запросы), даже если бы у них не было доступа к самим файловым системам.
Насколько я знаю, единственный способ изменить это – создать явный экспорт с fsid=root
или fsid=0
и другими необходимыми параметрами. Однако, экспортируемая директория может быть пустой: не нужно связывать монтируемые файловые системы внутри нее.
.
Ответ или решение
В контексте настройки NFS-сервера и клиента, описанной в вашем вопросе, использование sec=krb5
и других опций безопасности играет ключевую роль в обеспечении защищенного доступа к экспортируемым файловым системам. Давайте разберемся подробно с каждым из ваших вопросов и дадим исчерпывающее объяснение.
- Почему
/export/home
требует экспортирования/export
?
Важный аспект, который следует учитывать при настройке NFSv4, заключается в том, что в отличие от NFSv3, версия 4 работает с псевдо-файловой системой. В NFSv4 для ее создания используется опция fsid=0
, которая задает корень экспортируемой файловой системы. В данном случае этот корень соответствует '/export'
. Это означает, что все дочерние каталоги, такие как /export/home
, должны "видеть" этот корень для корректного функционирования. Удаление или закомментирование экспорта родительского каталога /export
приводит к тому, что клиент не может получить доступ к подкаталогам, поскольку корневой каталог не инициализирован. Таким образом, экспорт /export
необходим для работы системы, даже если он кажется лишним на первый взгляд.
- Должны ли параметры безопасности для
/export
и/export/home
совпадать?
Хотя это не обязательно, рекомендовано использовать одинаковые настройки параметров безопасности на родительские и дочерние каталоги, если они находятся в одной псевдо-файловой системе. Это связано с тем, что различие в настройках параметров безопасности может вызвать проблемы с доступом и совместимостью. В некоторых сценариях использование разных параметров может быть целесообразным для применения различных политик безопасности, но в стандартных конфигурациях лучше поддерживать единообразие для упрощения управления и предотвращения неожиданных проблем с доступом.
- Почему
auto.home
использует192.168.0.2:/home/&
вместо192.168.0.2:/export/home/&
?
Автомонтирование NFSv4 клиентов видит корневую директорию псевдо-файловой системы как /
. Это значит, что в конфигурации клиента путь к /export/home
отображается как /home
. Таким образом, NFSv4 автоконфигурация изменяет восприятие структуры каталогов, обеспечивая прозрачность и единообразие путей между различными экспортируемыми каталогами при взаимодействии с клиентом. Это упрощает настройку клиента, поскольку он видит только логические пути, а не физическое расположение экспортируемых директорий на сервере.
Пример и применение:
Предположим, у вас есть несколько подкаталогов внутри /export/
, таких как /export/home
и /export/data
. Экспортируя /export
как корневую псевдо-файловую систему NFSv4, вы даете всем подкаталогам возможность быть частью этой структуры. Клиенты, которые монтируют /export
, автоматически видят его как /
и могут получить доступ к дочерним каталогам через логические пути, например, /home
и /data
. Такая структуризация помогает управлять экспортируемыми каталогами и обеспечивает единый доступ с единой точки входа, что облегчает настройку и управление доступом.
Таким образом, экспорт родительской директории с одинаковыми параметрами безопасности, оптимальное использование конфигурации автомонтирования и понимание работы псевдо-файловой системы NFSv4 — это ключевые аспекты, которые следует учитывать при внедрении NFS-систем в корпоративной среде. Правильная настройка не только повышает эффективность, но и обеспечивает необходимую безопасность данных в соответствии с вашими требованиями.