До того как вы продолжите читать этот документ вам будет необходимо мочь выполнять операцию telnet между машинами, котрые вы будете использовать как сервер и клиент. Если что-то не работает, вам нужно проверить NET-3 HOWTO и правильно настроить работу сети.
До того что мы сможем сделать что-нибудь другое нам необходимо настроить сервер NFS. Если вы являетесь частью сети факультета или университета, то у вас вероятно есть несколько настроенных серверов NFS. Конечно если они позволят вам получить доступ к ним и если вы читаете этот документ чтобы получить доступ к одному из них, то вам очевидно не нужно читать это раздел и вы можете просто пропустить его до раздела Установка клиента NFS
Если вас нужно настроить не-Linux машину как сервер, то вам нужно прочитать системные руководство, чтобы определить как разрешить работу сервера NFS и экспортировать файловую систему через NFS. Как сделать это на различных платформах вынесено в отдельный раздел. После того как вы определили все что нужно вы можете продолжать чтение следующего раздела этого HOWTO. Или читайте дальше этот раздел, поскольку для некоторых вещей о которых я буду говорить не важно какой тип машины вы используете как сервер.
То о чем вы читали будет требовать настройки нескольких программ.
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
.
Это сделано? Хорошо.
Следующие программы, которые нам нужно запустить это 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.