Файл exports

Рассмотрим, как настроить сервер NFS. Здесь можно задать, какие каталоги доступны клиентам, в каких режимах предоставляется доступ, а также можно дополнительно задать много параметров для управления доступом клиентов к файловой системе сервера. Файл /etc/exports перечисляет системы, которые сервер предоставляет для общего доступа.

По умолчанию, rpc.mountd не позволяет кому угодно монтировать файловые системы по сети, что является довольно разумной позицией. Для того, чтобы разрешить одному или большему количеству хостов монтировать nfs-каталог, он должен быть экспортирован, то есть определен в файле exports. Типовой файл может выглядеть следующим образом:

# exports file for vlager
/home             vale(rw) vstout(rw) vlight(rw)
/usr/X11R6        vale(ro) vstout(ro) vlight(ro)
/usr/TeX          vale(ro) vstout(ro) vlight(ro)
/                 vale(rw,no_root_squash)
/home/ftp         (ro)

Каждая строка определяет каталог и хост, которому можно монтировать его. Имя хоста обычно задает его полное доменное имя, но может содержать универсальные символы * и ?, которые действуют аналогично их действию в оболочке Bourne. Например, lab*.foo.com соответствует lab01.foo.com также, как и laboratory.foo.com. Если имя хоста не задано, как с каталогом /home/ftp в примере выше, то любому хосту позволено монтировать этот каталог. Хост может быть также задан его IP-адресом в форме address/ netmask.

При проверке клиентского хоста по файлу exports, rpc.mountd будет искать имя клиента, используя вызов gethostbyaddr. С DNS этот вызов возвращает каноническое имя машины клиента, так что Вы должны удостовериться в том, не используются ли псевдонимы в exports. Без использования DNS, возвращенное имя будет первым подходящим именем, найденным в файле hosts, которое соответствует адресу клиента.

Имя хоста сопровождается произвольным, разделенным запятыми списком параметров, приведенных в скобках. Эти параметры могут принимать следующие значения:

secure

Запрос должен прийти с одного из зарезервированных портов, то есть с порта, номер которого меньше 1024. Задан по умолчанию.

insecure

Задает действие, обратное действию параметра secure.

ro

Монтировать каталог NFS только для чтения. Задан по умолчанию.

rw

Монтировать каталог NFS для чтения и записи.

root_squash

Все обращения по NFS выполнять от имени пользователя nobody (uid 65534) на сервере независимо от того, пользователь с каким uid послал запрос с клиента.

no_root_squash

Не отображать uid 0 на uid 65534. Задан по умолчанию.

link_relative

Преобразовывает абсолютные символьные связи (где имя объекта назначения начинается с наклонной черты вправо) в относительные связи, вводя необходимое число ../, чтобы добраться из каталога, содержащего связь, до корневого каталога на сервере. Этот параметр имеет смысл только тогда, когда монтируется целая файловая система хоста, иначе некоторые связи будут указывать в пустоту. Задан по умолчанию.

link_absolute

Оставляет все символьные связи такими, какими они и были (нормальное поведение для Sun NFS серверов).

map_identity

Клиентские uids и gids соответствуют серверным. Задан по умолчанию.

map_daemon

Клиент и сервер не разделяют пространство uid/gid. rpc.nfsd построит карту отображений ID клиента и сервера, запрашивая на клиенте демон rpc.ugidd.

map_static

Этот параметр позволяет Вам определять имя файла, который содержит статическую карту uids и gids. Например, map_static=/etc/nfs/vlight.map определит файл /etc/nfs/vlight.map как карту uid/gid. Синтаксис файла карты описан на man-странице exports(5).

map_nis

Предписывает NIS-серверу выполнять работу по отображению uid и gid.

anonuid и anongid

Эти параметры позволяют Вам определять uid и gid анонимного пользователя. Это полезно, если Вы имеете том, экспортируемый для монтирования всеми желающими.

Все ошибки при обработке файла exports будут переданы syslogd daemon на уровне notice при запуске rpc.nfsd или rpc.mountd.

Заметьте, что имена хостов будут получены из IP-адресов клиентов обратным поиском, так что Вы должны иметь правильно сконфигурированный сервер имен. Если Вы используете BIND, то Вы должны включить контроль спуфинга в Вашем файле host.conf. Подробно это рассмотрено в главе 6.