была предусмотрена специальная опция. В последних версиях сервера NFS вы можете управлять его поведением, задавая опции hide
и nohide
. Опция hide
скрывает смонтированные разделы, а опция nohide
выполняет противоположное действие. Некоторые клиенты допускают ошибки в работе со смонтированными разделами, поэтому в ряде случаев приходится задавать опцию hide
. При этом клиент должен самостоятельно монтировать оба каталога.
• noaccess
. Данная опция запрещает доступ к каталогу, даже если он является подкаталогом экспортируемого каталога. Предположим, например, что вы хотите экспортировать поддерево /home
, за исключением каталога /home/abrown
. Для этого надо создать в файле /etc/exports
обычную запись для каталога /home
и отдельную запись для каталога /home/abrown
, указав в ней опцию noaccess
. В результате пользователи не смогут обращаться к каталогу /home/abrown
.
• subtree_check
и no_subtree_check
. В некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой no_subtree_check
. Опция subtree_check
, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска.
• root_squash
и no_root_squash
. По умолчанию сервер NFS отвергает обращения, которые исходят от пользователя root
, работающего на клиентском компьютере. Эти обращения интерпретируются как попытки доступа локального анонимного пользователя. Такая мера повышает уровень безопасности системы, предполагая, что привилегии root
на удаленном компьютере могли быть получены незаконно. Если же вам необходимо выполнять администрирование сервера с удаленного узла, то, для того, чтобы иметь возможность работать с привилегиями локального пользователя root
, надо задать опцию no_root_squash
. Подобная мера может потребоваться, например, при создании резервных копий.
• all_squash
и no_all_squash
. В обычных условиях обращения от пользователей принимаются, но иногда приходится запрещать доступ к экспортируемым каталогам, содержащим важные данные. Сделать это можно с помощью опции all_squash
. Опция no_all_squash
отменяет действие all_squash
.
• anonuid
и anongid
. Анонимным пользователем, обращения которого отвергаются, обычно считается пользователь nobody
. Вы можете переопределить такую установку, указав идентификатор пользователя (UID) и идентификатор группы (GID). Сделать это позволяют соответственно опции anonuid
и anongid
. В этом случае пользователю root
, работающему на удаленном клиенте, будет предоставлен доступ с привилегиями указанного пользователя. Эти опции также приходится указывать при работе с клиентами PC/NFS, которые поддерживают лишь одного локального пользователя. Такая опция должна сопровождаться знаком равенства и идентификатором пользователя или группы, например
Пример файла /etc/exports
показан в листинге 8.1. В этом файле описаны два экспортируемых каталога: /usr/X11R6
и /home
. Кроме того, в нем содержится третья запись, запрещающая с помощью опции noaccess
обращения к каталогу /home/abrown
. (Поскольку последняя запись лишь ограничивает доступ, в ней не указан конкретный узел; обращаться в данному каталогу не может ни один клиент.) Каталоги /usr/X11R6
и /home
доступны для компьютера gingko
и всех узлов сети 192.168.4.0/24, однако при экспортировании этих каталогов заданы различные опции. Каталог /usr/X11R6
доступен только для чтения, а в каталог /hom
e клиенты имеют также право записывать данные. На компьютере gingko
для доступа к /usr/X11R6
задан идентификатор анонимного пользователя, равный 514, а при обмене с каталогом /home
не выполняется контроль поддерева.
Листинг 8.1. Пример файла /etc/exports
/usr/X11R6 gingko(ro,anonuid=504) 192.168.4.0/24(ro)
/home gingko(rw,no_subtree_check) 192.168.4.0/255.255.255.0(rw)
/home/abrown (noaccess)
Монтирование экспортируемых каталогов
На стороне клиента экспортируемые каталоги выглядят как разделы диска. Для их монтирования используется команда mount
, но при ее вызове указываются сервер NFS и монтируемый каталог. Эти данные задаются в формате
. Так, например, следующая команда монтирует экспортируемый каталог /home
в точке файловой системы /mnt/userfiles
:
# mount larch:/home /mnt/userfiles
Если вы хотите, чтобы экспортируемый каталог был постоянно доступен, вам надо создать запись в файле /etc/fstab
. Как и при использовании команды mount
, вместо имени устройства вы указываете имя сервера и путь к экспортируемому каталогу. Тип файловой системы задается как nfs
(при желании вы можете задать соответствующую опцию и при вызове mount
, но это не обязательно, поскольку Linux автоматически распознает тип файловой системы). Приведенная ниже запись в файле /etc/fstab
выполняет те же действия, что и рассмотренный ранее вызов утилиты mount
.
larch:/home /mnt/userfiles nfs defaults 0 0
В результате пользователь, обращаясь к каталогу /mnt/userfiles
, на самом деле увидит содержимое каталога /home
на узле larch
. С содержимым смонтированного каталога NFS можно выполнять большинство операций, допустимых для локального раздела Linux. Например, вы можете читать, редактировать и удалять файлы, а также выполнять прочие действия. Существуют также операции, которые недопустимы для экспортируемых каталогов, например, вы не можете объявлять раздел NFS как файл подкачки. В большинстве случаев эффективность работы с экспортируемыми каталогами NFS ниже, чем с разделами локального диска, так как обмен по сети осуществляется значительно медленнее, чем обмен с современными жесткими дисками. Однако в отдельных случаях, например при использовании гигабитовой Ethernet-сети, производительность NFS- обмена может даже превышать производительность работы с локальными устройствами, особенно если на клиентской машине используются устаревшие диски. На производительность системы NFS существенное влияние оказывают также быстродействие диска сервера и число клиентов.
Экспортируя каталоги и содержащиеся в них файлы, сервер NFS экспортирует также права доступа к ним. Информацию о пользователях и правах можно применять для контроля обращений к файлам и каталогам. Эти средства можно использовать даже для управления доступом со многих компьютеров, например, в случае, если один сервер NFS обслуживает несколько клиентов. Однако при этом может возникнуть проблема, которая состоит в следующем. Для идентификации пользователей в системе NFS применяются UID и GID. Если такие идентификаторы не совпадают на клиентах и на сервере, это может угрожать безопасности системы. Способы разрешения данной проблемы будут рассмотрены ниже в этой главе.
В последующих разделах будут описаны некоторые опции программы mount, которые влияют на поведение клиентов и серверов NFS и могут быть использованы для увеличения производительность и