До того, как вы продолжите читать этот документ вам будет необходимо успешно выполнять операцию telnet между машинами, которые вы будете использовать как сервер и клиент. Если что-то не работает, вам нужно прочитать NET-3 HOWTO и правильно настроить работу сети.
До того, как мы сможем сделать что-нибудь нам необходимо настроить сервер NFS. Если вы являетесь частью сети факультета или университета, то у вас вероятно есть несколько настроенных серверов NFS. Конечно, если они позволят вам получить доступ к ним и если вы читаете этот документ чтобы получить доступ к одному из них, то вам можно не читать это раздел и вы можете просто пропустить его до раздела Установка клиента NFS
Если вас нужно настроить не-Linux машину как сервер, то вам нужно прочитать руководство по нужной системе, чтобы определить как разрешить работу сервера NFS и экспортировать файловую систему через NFS. Описание того, как это сделать на разных платформах вынесено в отдельный раздел. После того, как вы определили все, что вам нужно вы можете продолжать чтение следующего раздела этого документа. Или читайте дальше этот раздел, поскольку для некоторых вещей, о которых я буду говорить не важно какой тип машины вы используете как сервер.
Если вы торопитесь, то пожалуйста посмотрите раздел Linux 2.2 до того, как вы продолжите читать это.
То, о чем вы читали, потребует от вас настройки нескольких программ.
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
и затем rpcinfo -p
. Это сделано? Хорошо.
Одна вещь. Удаленный доступ к вашей программе portmapper определяется
содержимым ваших файлов /etc/hosts.allow
и
/etc/hosts.deny
. Если rpcinfo -p
не работает, но ваш
portmapper запущен, то пожалуйста провереьте указанные файлы. Смотрите
раздел о безопасности для детального описания
этих файлов.
Следующие программы, которые нам нужно запустить далее -- это
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, имея
права администратора.
Теперь вы должны проверить, что 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
,
RPC_PROG_NOT_REGISTERED
или что-то подобное вместо этого, то
значит portmapper не запущен. Или у вас может быть что-то записано в файлах
/etc/hosts.{allow,deny}
что запрещает программе portmapper
отвечать, пожалуйста посмотрите
раздел о безопасности для подробного описания этих файлов. Если вы получили сообщение
No remote programs registered.
, то либо portmapper не хочет
говорить с вами, либо что-то не в порядке. Завершите выполнение nfsd,
mountd и portmapper и попытайтесь выполнить заново стартовую
последовательность.
После проверки того, что portmapper объявил сервисы, вы также можете выполнить проверку работы с помощью команды ps. Portmapper будет продолжать объявлять свои сервисы даже после того как программы расширяющие его возможности завершили работу. Так что проверка с помощью ps может быть необходимой, если вам кажется, что что-то не работает.
Конечно вам будет нужно исправить ваши системные rc-файлы для запуска mountd и nfsd при загрузке. Очень вероятно, что эти скрипты уже существуют на вашей машине, и вам будет нужно только раскомментировать нужный раздел или активизировать скрипт на нужном уровне запуска.
Справочные страницы, которые вы должны уже изучить: portmap, mountd, nfsd и exports.
Если вы сделали все как я сказал, то вы должны были установить все необходимое для работы сервера NFS.