В системах Solaris каталоги экспортируются при помощи команды share. Упрощенный синтаксис этой команды выглядит следующим образом:
share -F nfs [-о параметры] путь
где путь - путь к каталогу на сервере, экспортируемому в пользу клиентов, а параметры управляют доступом клиентов к данному каталогу. Доступные параметры:
- rw - Параметр rw разрешает чтение и запись для файловой системы. Может иметь вид гм=список_доступа, что позволяет указывать системы, которым разрешен такой доступ. В последнем случае доступ к файловой системе предоставляется только системам из списка доступа. Если список доступа отсутствует, все узлы получают полномочия чтения/записи в данной файловой системе.
- ro - Данный параметр ограничивает доступ только чтением. Он также позволяет указать список доступа - в формате ro=список_доступа. В последнем случае доступ предоставляется только системам из списка, и этот доступ разрешает только чтение данных. В отсутствие списка доступа все узлы получают в искомой файловой системе полномочия только чтения - что является умолчанием для команды share.
- aclok - Предоставляет полный доступ всем клиентам. Может стать причиной несанкционированного проникновения в систему. Этот параметр описан в документации системы Solaris, но его не следует использовать ни при каких обстоятельствах. Он нужен только для обратной совместимости с более не существующей версией NFS.
- anon=uid - Указывает, какой идентификатор пользователя (UID) следует использовать, если пользователь не представил корректный идентификатор.
- index= file - Предписывает NFS использовать файл индекса в стиле индекса веб-сервера - вместо стандартного списка файлов каталога для данной файловой системы.
- log[=tag] - Включает регистрацию событий в журнале. Если присутствует дополнительный тег (tag), он должен совпадать с тегом, определенным в файле /etc/nfs/nfslog.conf.
- nosub - Запрещает клиентам монтирование подкаталогов. По умолчанию монтирование подкаталогов разрешено.
- nosuid - Запрещает клиентам создавать в этой файловой системе файлы setuid и setgid. По умолчанию создание таких файлов разрешено.
- public - Предписывает использовать открытый файловый дескриптор для этой файловой системы.
- root=список_доступа - Разрешает root-доступ к файловой системе пользователям root с указан- ных систем.
- sec=type - Определяет вид аутентификации, прохождение которой требуется для доступа к данной файловой системе. Вид (type) - это список режимов безопасности NFS, элементы которого разделяются двоеточиями. Чтобы получить доступ, клиент должен поддерживать по меньшей мере один режим безопасности из перечисленных в списке. Существуют следующие режимы:
- sys - Управление доступом к файловой системе осуществляется на основе идентификаторов пользователей и групп, передаваемых открытым текстом. Таким же образом работают традиционные права доступа в Unix-системах - на основе идентификаторов UID и GID. В NFS UID и GID передаются по сети, и сервер вынужден доверять удаленному источнику, от которого поступили данные.
- dh - Для аутентификации используется криптографический метод с открытым ключом Диффи-Хеллмана.
- krb4 - Проверка подлинности по протоколу Kerberos версии 4.
- none - Не использовать аутентификацию. В этом случае все пользователи получают доступ к файловой системе в качестве пользователя nobody.
- window=seconds - Указывает максимальное время действия данных идентификации для методов dh и krb4. Сервер NFS отказывает в доступе клиентам, предоставляющим данные идентификации с большим временем действия. Число секунд (seconds) по умолчанию равно 30000.
Некоторые из параметров принимают в качестве аргумента список доступа, элементы которого разделяются двоеточиями. Каждый элемент обозначает либо конкретный компьютер посредством имени узла или IP-адреса, либо домен, сеть или сетевую группу NIS, к которым принадлежат узлы. Синтаксис элементов списка доступа следующий:
- имя узла - Произвольное имя узла, которое преобразуется в IP-адрес. Допустимы абсолютные имена, равно как и локальные имена узлов, но в любом случае должна существовать возможность превратить имя в адрес. Если имя упоминается в локальной таблице узлов, можно использовать краткую форму. Если разрешение имен выполняется при помощи DNS, следует указывать абсолютное доменное имя. Однако не следует использовать абсолютные имена, если ваша система не использует DNS, а полагается в работе исключительно на NIS.
- адрес - IP-адрес в десятичной записи через точку.
- сетевая группа (netgroup) - Если указано имя сетевой группы NIS, параметр действует для всех систем этой сетевой группы. Имена сетевых групп похожи на локальные имена узлов, что вносит некоторую путаницу. Имена сетевых групп следует использовать, только если применяется NIS.
- .домен - Доменное имя позволяет применить параметр ко всем системам домена. Имена доменов предваряются точкой (.). Таким образом, указание имени .wrotethebooh.com распространяет действие параметра на все системы домена wrotethebook.com. Доменные имена следует использовать, только если сервер взаимодействует с системой DNS.
@network[/prefix] - Адрес сети позволяет распространить действие параметра на все системы определенной сети. Адреса сетей предваряются символом Необязательный префикс сети (prefix) позволяет четко указать маску для сети.
Сочетание параметров rw и го может использоваться для предоставления различного уровня доступа различным клиентам. Например:
share -F nfs -o rw=crab:horseshoe ro /usr/man share -F nfs -o rw=rodent:crab:horseshoe:jerboas /export/home/research
Первая команда share разрешает чтение и запись узлам crab и rodent и предоставляет доступ только для чтения всем прочим. С другой стороны, вторая команда share разрешает чтение/запись узлам rodent, crab, horseshoe и jerboas, но запрещает доступ любого рода всем остальным клиентам.
Команда share утрачивает силу при перезагрузке системы. Поместите команды share в сценарий /etc/dfs/dfstab - это позволит клиентам получать доступ к соответствующим файловым системам и после перезагрузки. Вот пример файла dfstab, содержащего две приведенные выше команды:
% cat /etc/dfs/dfstab # place share(1M) commands here for automatic execution # on entering init state 3. # # share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resource] # .e.g., # share -F nfs -o rw=engineering -d "home dirs" /export/home2 share -F nfs -o rw=crab:horseshoe ro /usr/man share -F nfs -o rw=rodent:crab:horseshoe:jerboas /export/home/research
Команда share, файл dfstab и даже собственно термин «share» присущи только системе Solaris. В большинстве систем Unix, если речь заходит о предоставлении клиентам доступа к файлам по NFS, то для файлов выполняется экспортирование, а не организация совместного доступа. Боле е того, в этих системах не используется команда share и файл dfstab - режимы доступа к файловым системам устанавливаются в файле /etc/exports. Примером такой системы является Linux.