Next Previous Contents

## 3. Установка сервера NFS

## 3.1 Непременные условия

До того как вы продолжите читать этот документ вам будет необходимо мочь выполнять операцию telnet между машинами, котрые вы будете использовать как сервер и клиент. Если что-то не работает, вам нужно проверить NET-3 HOWTO и правильно настроить работу сети.

## 3.2 Первый шаг

До того что мы сможем сделать что-нибудь другое нам необходимо настроить сервер NFS. Если вы являетесь частью сети факультета или университета, то у вас вероятно есть несколько настроенных серверов NFS. Конечно если они позволят вам получить доступ к ним и если вы читаете этот документ чтобы получить доступ к одному из них, то вам очевидно не нужно читать это раздел и вы можете просто пропустить его до раздела Установка клиента NFS

Если вас нужно настроить не-Linux машину как сервер, то вам нужно прочитать системные руководство, чтобы определить как разрешить работу сервера NFS и экспортировать файловую систему через NFS. Как сделать это на различных платформах вынесено в отдельный раздел. После того как вы определили все что нужно вы можете продолжать чтение следующего раздела этого HOWTO. Или читайте дальше этот раздел, поскольку для некоторых вещей о которых я буду говорить не важно какой тип машины вы используете как сервер.

То о чем вы читали будет требовать настройки нескольких программ.

## 3.3 Portmapper

Portmapper на Linux называется либо `portmap` либо `rpc.portmap`. Справочная страница на моей системе говорит что это "Преобразователь номеров портов DARPA в вызовы соответствующих программ RPC". Это первая дыра в безопасности, которую вы откроете читая этот документ. Описание как закрыть одну из дыр находится в разделе безопасности. Который я советую вам прочитать.

Запустите portmapper. Он называется либо `portmap` либо `rpc.portmap` и должен находиться в директории `/usr/sbin` (на некоторых машинах он называется `rpcbind`). Вы можете запустить его сейчас вручную, но он должен запускаться при каждом запуске вашей машины, так что вам необходимо создать/отредактировать rc-скрипты. Ваши rc-скрипты объяснены более близко в справочной странице `init`, они обычно находятся в директориях `/etc/rc.d`, `/etc/init.d` или `/etc/rc.d/init.d`. Если там есть скрипт названный `inet`, то это нужный для редактирования скрипт. Но что написать или что сделать находится вне области этого документа. Запустите portmap, и проверьте что он запущен с помощью команды `ps aux`. Это сделано? Хорошо.

## 3.4 Mountd и nfsd

Следующие программы, которые нам нужно запустить это mountd и nfsd. Но сначала мы отредактируем другой файл. Это `/etc/exports`. Скажем я хочу, чтобы файловая система `/mn/eris/local`, которая находится на машине `eris` была доступна для машины названной `apollon`. Тогда я помещу в файл `/etc/exports` на eris следующие строки:

    /mn/eris/local  apollon(rw)

Вышеприведенные строки дают apollon доступ на чтение/запись на `/mn/eris/local`. Вместо `rw` мы можем сказать `ro`, что означает только чтение (если вы ничего не поместите, то по умолчанию будет только чтение. Существуют другие опции, которые вы можете дать, и я позже буду обсуждать некоторые из них относящиеся к безопасности. Они все перечислены в справочной странице `exports`, которую вы должны прочитать по крайней мере раз в жизни. Существуют также лучшие способы чем перечисление всех машин в файле exports. Вы например можете использовать сетевые группы, если у вас работает NIS (или NYS) (NIS также известен как YP), и всегда использовать шаблоны (wild cards) домэйнов и подсетей IP как машины, которым разрешено что-то монтировать. Но вы учитывать, кто может получить доступ к серверу неавторизованным способом, если вы используете такую всеобъемлющую авторизацию.

Замечание: Этот файл exports не имеет тот же синтаксис, котрый используют другие системы Unix. В этом документе есть отдельный раздел о файлах `exports` других Unix-систем.

Сейчас мы готовы к запуску mountd (или он может называться `rpc.mountd`) и nfsd (который может называться `rpc.nfsd`). Обе эти программы читают файл exports.

Если вы отредактировали файл `/etc/exports`, то вы должны быть уверены, что nfsd и mountd знают что файл изменен. Традиционный способ сделать это -- это запустить программу `exportfs`. Во многих дистрибутивах Linux программа exportfs отсутствует. Если это так вы можете создать такой скрипт на вашей машине:

    #!/bin/sh

    killall -HUP /usr/sbin/rpc.mountd

    killall -HUP /usr/sbin/rpc.nfsd

    echo re-exported file systems

Сохраните его в файле, скажем `/usr/sbin/exportfs`, и не забудьте выполнить `chmod a+rx`. Сейчас, после того как вы изменили ваш файл exports, вы должны запустить exportfs как root.

Теперь вы должны проверить, что mountd и nfsd запущены правильно. Сначала это делается с помощью `rpcinfo -p`. Вывод программы должен показать что-то подобное следующему:

       program vers proto   port

        100000    2   tcp    111  portmapper

        100000    2   udp    111  portmapper

        100005    1   udp    745  mountd

        100005    1   tcp    747  mountd

        100003    2   udp   2049  nfs

        100003    2   tcp   2049  nfs

Как вы видите portmapper анонсировал свои сервисы, и что имеются mountd и nfsd.

Если вы получили сообщение `rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused` или что-то подобное вместо этого, то значит portmapper не запущен. Исправьте это. Если вы получили сообщение `No remote programs registered.`, то либо portmapper не хочет говорить с вами, либо что-то не в порядке. Завершите nfsd, mountd и portmapper и попытайтесь выполнить заново стартовую последовательность.

После проверки что portmapper объявил сервисы вы также можете выполнить проверку с помощью ps. Portmapper будет продолжать объявлять свои сервисы даже после того как программы расширяющие его возможности завершили работу. Так что проверка с помощью ps может быть умной, если что-то выглядит сломанным.

Конечно вам будет нужно исправить ваши системные rc-файлы для запуска mountd и nfsd также как и portmapper при загрузке. Очень вероятно, что эти скрипты уже существуют на вашей машине, и вам будет нужно только раскомментировать нужный раздел или активизировать скрипт на нужном уровне запуска.

Справочные страницы, которые вы должны сейчас знать: portmap, mountd, nfsd и exports.

Хорошо, если вы сделали все как я сказал, вы должны установить все для запуска сервера NFS.

Next Previous Contents