Для обеспечения NFS-обмена недостаточно вызвать программу отображения портов. Вам также надо определить разделяемые каталоги (этот вопрос будет рассматриваться в следующем разделе) и запустить сам сервер NFS. Для запуска сервера NFS используется сценарий SysV (обычно он называется
nfs
). В некоторых версиях Linux приходится также запускать дополнительные сценарии SysV. При инсталляции NFS эти сценарии устанавливаются автоматически. Изменив конфигурацию сервера, необходимо перезапустить его; это можно сделать, используя опцию
restart
сценария. Соответствующая команда выглядит следующим образом:
/etc/rc.d/init.d/nfs restart
.
Разделение файлов с помощью NFS
Для того
чтобы обеспечить совместное использование файлов, надо сообщить серверу NFS о том, какие каталоги должны экспортироваться и какие клиенты имеют право доступа к конкретным каталогам. Кроме того, необходимо указать опции, управляющие доступом и определяющие другие характеристики сервера. Для монтирования каталогов, экспортированных сервером NFS, на стороне клиента используется программа
mount
, но вместо локального файла устройства при ее вызове указывается сервер NFS и задается имя монтируемого каталога.
Определение экспортируемых каталогов
Для управления сервером NFS используется файл
/etc/exports
. В этом файле содержится набор записей, каждая из которых определяет экспортируемый каталог. Запись занимает одну строку и имеет следующий формат:
. Вы можете указать любой каталог, однако некоторые каталоги экспортировать нецелесообразно. Так, например, предоставив доступ к
/etc
или
/proc
, вы создадите угрозу безопасности компьютера, так как удаленные пользователи получат доступ к информации, определяющей конфигурацию системы. Некоторым может показаться, что, экспортируя каталог
/dev
, вы предоставите удаленным пользователям доступ к устройствам сервера, но это не так. Файлы, содержащиеся в этом каталоге, всегда определяют устройства локального компьютера, поэтому, смонтировав
/dev
, вы получите лишь копии файлов, с помощью которых можно в лучшем случае взаимодействовать с устройствами на клиентской машине. Если конфигурация компьютера, на котором расположен сервер NFS, отличается от конфигурации клиентской машины, то после монтирования
/dev
на клиентской машине станут доступны файлы, которые описывают несуществующие устройства. Использование таких файлов может представлять опасность для клиентской системы. (Эту проблему можно разрешить, используя опцию
nodev
, которая будет описана ниже.)
При описании экспортируемых каталогов указываются отдельные клиенты или группы клиентов. Ниже перечислены способы, позволяющие задавать клиентов, которым разрешен доступ к экспортируемому каталогу.
• Отсутствующий идентификатор клиента. Если вы зададите только список опций, помещенный в скобки, к экспортируемому каталогу сможет обращаться любой клиент. Такая конфигурация недопустима с точки зрения безопасности системы и может применяться лишь в исключительных случаях.
• Имя одного компьютера. Если вы укажете имя конкретного компьютера, например
larch
или
larch.threeroomco.com
, клиентские программы, расположенные на этом компьютере, получат доступ к разделяемому каталогу. Если имя домена не указано, предполагается, что клиент принадлежит тому же домену, что и сервер.
• Группа клиентов, определенная с помощью символов групповой операции. При описании клиента могут быть использованы знак вопроса (
?
), заменяющий один символ, и звездочка (
*
), заменяющая группу символов в имени компьютера. Например, идентификатор
*.threeroomco.com
определяет все машины в домене
threeroomco.com
. Символы (
?
)
и (
*
) не заменяют точку (
.
), поэтому с их помощью нельзя определить компьютеры, принадлежащие поддоменам. Например, выражение
*.threeroomco.com
не описывает компьютер
mulberry.bush.threeroomco.com
.
• Группа NIS. Если в вашей сети присутствует сервер NIS (Network Information Service — сетевая информационная служба), вы можете задавать группы NIS, указывая в начале имени группы символ
@
.
• Группа клиентов, заданная с помощью IP-адреса сети. Ограниченную группу клиентов можно описывать, указывая адрес и маску подсети, например 255.255.0.0. Допускается также определение маски подсети как число битов, соответствующих адресу посети, например 172.19.0.0/16. (Задавая IP-адрес одного компьютера, маску подсети можно не указывать.)
С точки зрения безопасности системы предпочтительнее использовать для идентификации компьютеров их IP-адреса, так как если злоумышленник получит доступ к серверу DNS или NIS, доменные имена и имена групп могут быть переопределены. IP-адрес также можно подделать, особенно если попытка незаконного доступа осуществляется из локальной сети, но использование IP-адреса исключает по крайней мере один способ атаки. С другой стороны, указание компьютеров с помощью IP-адресов может быть неудобным, в особенности если адреса часто меняются. Так, например, происходит, если адреса компьютерам выделяет сервер DHCP, работа которого рассматривалась в главе 5 данной книги.
Совет
Как вы уже знаете, доступ к программе
portmap
можно ограничить с помощью TCP Wrappers. При этом указание идентификаторов клиентов в описании экспортируемых каталогов может показаться излишней мерой. Это не совсем верно. Ограничивая доступ к серверу, надо использовать для этого все доступные способы. Дело в том, что средства, блокирующие обращения, могут быть сконфигурированы неверно, а при наличии недостатков в системе защиты их можно обойти. В этом случае избыточные механизмы ограничения доступа будут очень полезны. Рекомендуется также запретить обращение ряда узлов к серверу, применяя для этого фильтрацию пакетов. Данный способ будет рассматриваться в главе 25.
На заметку
В состав многих дистрибутивных пакетов Linux входят средства брандмауэра; они легко конфигурируются в процессе инсталляции. Некоторые из них, например брандмауэр для Red Hat, уже настроены с учетом блокирования доступа к серверу NFS, поэтому в некоторых случаях разрешить доступ бывает достаточно трудно. Если у вас возникнут проблемы, связанные с взаимодействием клиентов с сервером NFS, ознакомьтесь с материалом, изложенным в главе 25, он поможет вам изменить настройку брандмауэра.
Для каждого клиента или группы клиентов можно задать отдельный набор опций. Эти опции помещаются в скобки и указываются после идентификатора клиента. Опции отделяются одна от другой запятыми. Некоторые из них управляют доступом; их использование рассматривается в следующем разделе. Другие опции задают характеристики сервера и влияют на производительность. Примеры таких опций приведены ниже.
•
sync
и
async
. Данные опции задают соответственно синхронный и асинхронный режимы выполнения операций. При записи в асинхронном режиме сервер может сообщить клиенту о том, что операция завершена, в то время как запись на диск еще продолжается. Это ускоряет процесс обмена данными, но создает угрозу их целостности; в случае выхода сервера из строя информация будет утеряна. Официально считается, что NFSv2 не поддерживает асинхронные операции, но, несмотря на это, сервер NFS в системе Linux позволял выполнять действия в асинхронном режиме. NFSv3 поддерживает асинхронный режим, а для снижения риска к клиенту предъявляются требования буферизации данных. По умолчанию в серверах NFSv3 предполагается опция
async
, но в бета-версиях программ NFS для Linux данная опция игнорируется.