Разделы новостей
Последние новости:
Железо
Софт
Интернет
Наука и техника
Электронная коммерция

Разделы статей



NFS HOWTO, v0.7, 3 Ноября 1997 г.


Подписка на 2007 год: Журналы Linux Format и Системный администратор
Mandriva Corporate Server 4 и Mandriva Multi Network Firewall 2







Разместить статью на этом сайте






Mandriva Linux 2007 LinuxCenter Edition (3DVD) и Free Edition (1DVD)
Коробочные версии Mandriva Linux 2007: Discovery, PowerPack и PowerPack+


NFS HOWTO, v0.7, 3 Ноября 1997 г.
 
Как установить клиента и сервер NFS.

[Nicolai Langfeldt, перевод: Alex Ott]

1. Преамбула

1.1 Легальная часть

Авторские права Nicolai Langfeldt, 1997. Не модифицировать без исправления авторских прав, распространяется свободно но должен оставаться этот параграф. Раздел FAQ основывается на NFS FAQ собранном Alan Cox. Раздел Список проверки основан на списке проверки проблем монтирования собранном IBM Corporation.

1.2 Остальное

Это будет никогда не завершенный документ, пожалуйста посылайте мне сообщения о ваших успехах и проблемах -- это сделает этот документ лучше. Пожалуйста посылайте деньги, комментарии и/или вопросы janl@math.uio.no. Если вы посылаете сообщение по электронной почте, пожалуйста будьте уверены, что ваш обратный адрес правилен и работает, я получаю довольно много сообщений по электронной почте и определение вашего адрес может дать мне лишнюю работу. Пожалуйста.

Если вы хотите перевести этот HOWTO пожалуйста дайте мне знать, чтобы я мог отслеживать на каких языках я опубликован :-).

Проклятья и благодарности Olaf Kirch, кто заставил меня написать этот документ и кто дал много пожеланий для него :-)

Этот HOWTO делает обзор NFS в ядре версии 2.0. В ядре версии 2.1 существуют значительные расширения и изменения.

1.3 Посвящение

Этот документ посвящен Anne Line Norheim Langfeldt. Хотя она вероятно никогда не прочитает его, поскольку она не относится к этому классу девушек.

2. README.first

NFS --- Network File System (Сетевая файловая система) имеет три важных характеристики:

  • Она делает возможным разделение файлов по сети.
  • Она в большинстве работает достаточно хорошо.
  • Ее открытие может быть риском для безопасности, что хорошо понимается кракерами и может быть легко взломано чтобы получить доступ (чтение, запись, удаление) ко всем вашим файлам.
  • Я расскажу об обоих вопросах в этом документе. Пожалуйста будьте уверены, что вы читали раздел о безопасности в этом документе и вы уменьшите уязвимость для глупых проблем безопасности. Пассажи о секретности будут довольно техническими и требовать некоторых знаний о работе IP сетей и используемых терминов. Если вы не знаете эти термины, то вы должны вернуться назад и просмотреть относящиеся к сети HOWTO или взять книгу о сетевом администрировании TCP/IP чтобы ознакомить себя с TCP/IP. В любом случае это хорошая идея если вы занимаетесь администрированием машин с UNIX/Linux. Очень хорошая книга о данном предмете это книга TCP/IP Network Administration автор Craig Hunt, опубликовано OReilly & Associates, Inc. И после того как вы прочитаете и поймете ее у вас будет больший вес в при поиске работы, вы не сможете быть слабым ;-)

    В этом документе есть два раздела чтобы помочь вам найти неисправности при работе с NFS, эти разделы называются Список проверки проблем монтирования и FAQs. Пожалуйста посмотрите их, если что-то не работает как объявлено.

    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: cant 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.

    4. Настройка клиента NFS

    Первым делом вам нужно ядро с поддержкой файловой системы NFS либо вкомпилированной в ядро, либо доступной как модуль. Это настраивается до компиляции ядра. Если вы никогда не компилировали ядро, то вам может быть нужно прочитать Rernel HOWTO и выяснить как это делается. Если вы используете хороший дистрибутив (такой как RedHat) и вы никогда не экспериментировали с ядром или модулями (и таким образом разрушали его ;-), вероятно что nfs автоматически доступен для вас.

    Теперь вы можете, в командной строке администратора, ввести соответствующую команду монтирования и файловая система появится у вас. Продолжая пример из предыдущего раздела мы хотим смонтировать /mn/eris/local с машины eris. Это делается с помощью такой команды:

    mount -o rsize=1024,wsize=1024 eris:/mn/eris/local /mnt
    
    

    (Мы вернемся к опциям rsize и wsize). Файловая система сейчас доступна в /mnt и вы можете перейти туда и выполнить ls в ней, и посмотреть на индивидуальные файлы. Вы заметите, что это не так быстро как локальная файловая система, но более удобно чем ftp. Если вместо монтирования файловой системы команда mount выдаст сообщение об ошибке mount: eris:/mn/eris/local failed, reason given by server: Permission denied, то файл exports является неправильным или вы забыли запустить exportfs после редактирования файла exports. Если команда сообщит mount clntudp_create: RPC: Program not registered это означает, что nfsd или mountd не запущены на сервере.

    Чтобы избавиться от файловой системы вы можете выполнить:

    umount /mnt
    
    

    Чтобы выполнить системное монтирование файловой системы nfs при загрузке вам нужно отредактировать файл /etc/fstab как обычно это делается. Для нашего примера требуется такая строка:

    # device mountpoint fs-type options dump fsckorder
    
    ...
    
    eris:/mn/eris/local /mnt nfs rsize=1024,wsize=1024 0 0
    
    ...
    
    

    Это почти все что есть. Читайте пожалуйста дальше.

    4.1 Опции монтирования

    Здесь даны некоторые опции, которые вы должны рассмотреть сразу добавляя их. Они управляют способом, которым клиент NFS отрабатывает падение сервера или отключение сети. Одно из свойств NFS в том, что он может изящно обрабатывать эти неполадки. Если вы правильно установите клиента. Существует два различающихся режима обработки ошибок:

    soft

    клиент NFS client будет сообщать об ошибке программе, которая пытается получить доступ к файлу расположенному на файловой системе, смонтированной через NFS. Некоторые программы довольно хорошо обрабатыают эти ошибки, но большинство программ не делают это. Я не рекомендую использование этой установки.

    hard

    Программа имеющая доступ к файлу на смонтированной по NFS файловой системе просто повесится при крахе сервера. Процесс не может быть прерван или убит до тех пор пока вы явно не укажите опцию intr. Когда сервер NFS будет запущен заново, то программа будет безмятежно продолжать работу с прерванного места. Это скорее всего то что вам нужно. Я рекомендую использовать опции hard,intr на всех файловых системах смонтированных NFS.

    Продолжая предыдущий пример, теперь в нашем файле fstab запись будет выглядеть так:

    # device mountpoint fs-type options dump fsckorder
    
    ...
    
    eris:/mn/eris/local /mnt nfs rsize=1024,wsize=1024,hard,intr 0 0
    
    ...
    
    

    4.2 Оптимизация NFS

    Обычно, если опции rsize и wsize не заданы, то NFS будет читать и писать блоками по 4096 или 8192 байтов. Некоторые комбинации ядер Linux и сетевых карт не могут обрабатывать такие большие блоки, и это может быть неоптимально. Так что нам нужно экспериментировать и найти значения rsize и wsize, которые работают так быстро насколько это возможно. Вы можете протестировать скорость при заданных вами опциях с помощью некоторых простых комманд. Задав вышеприведенную команду монтирования и получив доступ с правом записи на диск, вы можете выполнить тестирование производительности последовательной записи:

    time dd if=/dev/zero of=/mnt/testfile bs=16k count=4096
    
    

    Эта команда создает 64Mb файл, заполненный нулями (этот файл должен быть достаточно большим, настолько большим, чтобы кэширование не сыграло значительную роль в производительности, используйте больший размер файла, если у вас достаточно много памяти). Проделайте эту операцию несколько раз (5-10?) и усредните полученные результаты. Полученная величина это время прохода, т.е. величина наиболее интересующая нас в этом эксперименте. Затем вы можете измерить производительность чтения, прочитав файл обратно на свою машину:

    time dd if=/mnt/testfile of=/dev/null bs=16k
    
    

    сделайте это также несколько раз и усредните результат. Затем отмонтируйте диск и примонтируйте заново с увеличенными значениями rsize и wsize. Они вероятно должны быть кратными 1024, и не больше чем 16384 байтов, поскольку это максимальный размер в NFS версии 2. Прямо после монтирования с увеличенными значениями перейдите в смонтированную файловую систему и выполните команду подобную ls, исследуйте файловую систему, чтобы убедиться, что все в норме. Если значения rsize/wsize слишком большие, то симптомы очень необычные и не 100%-но очевидные. Типичный симптом в неполном списке файлов при выполнении команды ls, и отсутствие сообщений об ошибках. Или чтение файлов загадочно срывается без сообщения об ошибке. После установления факта, что заданные значения rsize/wsize раюотают, вы можете далее продолжать тестировать производительность. различные серверные платформы вероятно имеют различные оптимальные размеры блоков. SunOS и Solaris по общему мнению довольно быстрее при размере блока равном 4096 байт, чем при других значениях.

    Новые ядра Linux (с версии 1.3) выполняют предваряющее чтение для значений rsize больших или равных размеру страницы машины. На процессорах Intel размер страницы равен 4096 байтам. Предваряющее чтение значительно увеличит производительность NFS при чтении. Так что на машинах с процессором Intel вы захотите использовать значение rsize равное 4096 байтам из всех возможных.

    Помните, что вам нужно отредактировать /etc/fstab для задания найденных значений rsize/wsize.

    Прием для увеличения производительности NFS при записи заключается в запрещении синхронной записи на сервер. Спецификация NFS требует, чтобы запросы NFS на запись не считались законченными до записи данных на неизменчивый носитель (обычно диск). Это ограничивает производительность записи, а асинхронная запись увеличит скорость записи по NFS. Демон nfsd для Linux никогда не делает синхронную запись, поскольку реализация файловой системы Linux сама не дает сделать это, но серверах работающих на отличных от Linux системах вы можете увеличить производительность этим способом, поместив в ваш файл exports:

    /dir -async,access=linuxbox
    
    

    или что-нибудь подобное. Пожалуйста посмотрите справочную страницу exports на данной машине. Также запомните, что это увеличивает риск потери данных.

    5. NFS через медленные линии

    Медленные линии включают в себя модемы, ISDN и возможно другие соединения на дальние расстояния.

    Этот раздел базируется на знании об используемых протоколах, а не на настоящих экспериментах. Мой домашний компьютер был выключен в течении 6 месяцев (плохой жесткий диск и отсутствие денег), так что у меня не было модемного соединения для тестирования. Пожалуйста дайте мне знать, если вы попробуете сделать это :-)

    Первая вещь которую вы должны помнить, это то что NFS -- медленный протокол. Использование NFS в большинстве своем подобно использованию протокола kermit для переноса файлов. Это медлено. Почти все быстрее чем NFS. FTP быстрее. HTTP быстрее. rcp быстрее. ssh быстрее.

    Все еще хотите попробовать это? Ok.

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

    первая вещь которую вам необходимо сделать -- это не использовать опцию монтирования soft. Это вызовет возвращение программному обеспечению сигналов об ошибках при таймаутах, в основном обычное программное обеспечение не слишком хорошо обрабатывает такие ошибки. Это хороший способ получить странные сбои. Вместо этого используйте опцию монтирования hard. Когда активна опция hard, то таймауты вызывают бесконечные попытки возобновления вместо прерывания работы ваших программ. Это то что вам нужно. Действительно.

    Следующая вещь которую нужно сделать -- это поиграть с опциями монтирования timeo и retrans. Они описаны в справочной странице nfs(5), здесь приводится выдержка из нее:

     timeo=n Величина в десятых долях секунды до посылки
    
     первой ретрансляции после таймаута RPC. По
    
     умолчанию эта величина равна 7 десятых
    
     секунды. После первого таймаута, время таймаута
    
     удваивается после каждого таймаута, пока не
    
     будет достигнута величина максимального таймаута 
    
     равна 60 секундам, или произойдет достаточно
    
     ретрансляции, вызвав главный таймаут. Затем если 
    
     файловая система смонтирована с опцией hard, то
    
     каждый новый таймаут каскадно запускается с
    
     начальным значением в два раза больше, чем при
    
     предыдущем каскаде, кроме того удваиваясь на
    
     каждой ретрансляции. максимальный таймаут всегда 
    
     равен 60 секундам. Наилучшая общая
    
     производительность может быть достигнуто
    
     увеличением таймаута при монтировании на
    
     загруженной сети, к медленному серверу, или
    
     сквозь несколько маршрутизаторов.
     retrans=n Эта величина задает количество неосновных
    
     таймаутов и ретрансляций, которые должны
    
     произойти до возникновения главного таймаута. По 
    
     умолчанию эта величина равно 3. Когда возникает
    
     главный таймаут, то файловые операции либо
    
     прерваны или на консоли печатается сообщение 
    
     "server not responding".
    
    

    Другими словами: Если не будет передан за таймаут равный 0.7 секунды (700ms), то клиент NFS повторит запрос и увеличит таймаут в два раза до 1.4 секунды. Если ответ не придет в течении 1.4 секунды, то запрос повторится снова и таймаут будет увеличен до 2.8 секунды.

    Скорость линии может быть измерена с помощью команды ping с тем же самым размером пакета, который вы установили в опциях rsize/wsize.

    $ ping -s 8192 lugulbanda
    
    PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes
    
    8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms
    
    8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms
    
    8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms
    
    8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms
    
    8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms
    --- lugulbanda.uio.no ping statistics ---
    
    5 packets transmitted, 5 packets received, 0% packet loss
    
    round-trip min/avg/max = 14.9/15.1/15.9 ms
    
    

    Время здесь показывает как долго пакет ping идет туда и обратно к машине lugulbanda. 15ms это довольно быстро. При работе через модем со скоростью 28.000 бод вы можете ожидать где-то 4000-5000ms, и если линия нагружена еще кем-то, то время будет даже выше может быть раза в два. Когда это время высоко, мы говорим что это высокое запаздывание. В общем для больших пакетов и для более загруженных линий запаздывание будет увеличиваться. Увеличьте timeo соответственно вашей линии и загрузке. И поскольку запаздывание увеличивается когда вы используете линию для других вещей: даже если вы хотите использовать FTP и NFS в одно и тоже время, то вы должны попытаться измерить время ping во время использования FTP для передачи файлов.

    6. Безопасность и NFS

    Я ни коим образом не являюсь экспертом в области компьютерной безопасности. Но у меня есть маленький совет для сознающих безопасность. Но будьте предупреждены: это ни в коем случае не полный список относящихся к NFS проблем, и если вы думаете, что вы обезопасились один раз прочитав и выполнив, все что я даю здесь, то я хочу предать вас.

    Этот раздел не должен беспокоить вас если вы находитесь в закрытой сети, где вы доверяете всем пользователям, и никто кому вы не доверяете ни может получить доступ к машинам в сети. Например не должно быть dial-соединения в сеть, и не должно быть никакого способа подключиться к сети, в которой вы не доверяете всем. Вы думаете я параноик? Я не параноик во всех областях. Это базовый совет по безопасности. Безопасный требует наличия тщательного и знающего администратора, который знает где найти информацию о текущих и потенциальных проблемах безопасности.

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

    Что вам необходимо читать -- это консультационные материалы CERT относящиеся к NFS, большинство текстов приведенных ниже связаны с советами, написанными в выпусках CERT. Смотрите ftp.cert.org/01-README для обновленного списка консультаций CERT. Здесь приведены некоторые относящиеся к NFS консультации:

    CA-91:21.SunOS.NFS.Jumbo.and.fsirand 12/06/91
    
     Уязвимость в отношении сетевой файловой системы (NFS) Sun
    
     Microsystems, Inc. (Sun) и программы fsirand. Эта уязвимость
    
     возможна в версиях SunOS 4.1.1, 4.1, and 4.0.3 на всех
    
     архитектурах. Заплатки (Patches) доступны для SunOS
    
     4.1.1. Также доступна начальная заплатка для SunOS 4.1 NFS. Sun
    
     будет обеспечит полные заплатки для SunOS 4.1 и SunOS 4.0.3 позже.
    CA-94:15.NFS.Vulnerabilities 12/19/94
    
     Этот консультационный материал обеспечивает измерение
    
     безопасности для охраны против против некоторых дыр в безопасности
    
     в сетевой файловой системе (NFS). Этот материал выпущен в связи с
    
     увеличением случаев взлома машин используя утилиты для
    
     использования уязвимых точек.
    CA-96.08.pcnfsd 04/18/96
    
     Этот материал описывает проблемы с безопасностью в программе pcnfsd
    
     (также известной как rpc.pcnfsd). Заплатка для исправления ошибки
    
     прилагается. 
    
    

    6.1 Безопасность клиента

    На клиентской стороне мы можем решить, мы не хотим слишком сильно доверять серверу, это делается несколькими способами с помощью опций монтирования. Например, мы можем запретить выполнение программ с установленным битом suid в файловой системе NFS, это делается опцией монтирования nosuid. Это хорошая идея и вы должны рассмотреть ее, используя смонтированные по NFS. Это означает что администратор сервера не сможет сделать программы с установленным suid-администратора на файловой системе, затем войти на машину клиента как обычный пользователь и затем используя программу с suid-администратора стать приобрести также права администратора на машине клиента. Мы также можем запретить выполнение файлов на смонтированной файловой системе с помощью опции noexec. Но менее распространено по сравнению с опцией nosuid, поскольку файловая система вероятно содержит по крайней мере некоторые скрипты, или программы, которые необходимо выполнить. Вы можете ввести эти опции в колонке опций вместе с опциями rsize и wsize, разделенными запятыми.

    6.2 Безопасность сервера: nfsd

    на сервере мы можем решить, что мы не хотим доверять администратору клиента. Мы можем сделать это используя опцию root_squash в файле exports:

    /mn/eris/local apollon(rw,root_squash)
    
    

    Теперь, если пользователь с UID 0 на клиенте попытается получить доступ (чтение, запись, удаление), то файловый сервер выполнит подстановку UID пользователя nobody на сервере. Это означает, что администратор клиента не сможет получить доступ или изменять файлы, которые может изменять или иметь доступ только администратор сервера. Это хорошо и вы должны вероятно использовать опцию root_squash на всех экспортируемых файловых системах. Вы скажете, что "Администратор клиента все равно может выполняить команду su, чтобы зайти как любой другой пользователь и получить доступ и изменить любые пользовательские файлы". На это есть ответ: "Да есть такой способ, и это работает в Unix и NFS. Это имеет одно важное заключение: Все важные файлы и программы должны иметь владельцем пользователя root, а не пользователя bin или другого пользователя не-администратора, поскольку только администратор клиента не может получить дочтуп как администратор сервера. С справочной странице NFSd есть несколько других подобных опций, так что вы можете решить, что вы (не) доверяете кому-либо со стороны клиента. У вас также имеются опции для осечения любых диапазонов UID и GID которые вы хотите. Это описывается в справочной странице Linux NFSd.

    root_squash является установленным по умолчанию для Linux NFSd, для передачи администраторских полномочий для доступа к файловой системе используйте опцию no_root_squash.

    Другая важная вещь, которую необходимо сделать, это проверить, что nfsd проверяет, что все запросы приходят с привелигированного порта. Если он принимает запросы с любого старого порта на клиенте, то пользователь без специальных привелегий может запустить программу, которую легко получить по Internet. Он умеет "говорить" на языке протокола nfs и будет притворяться, что пользователь является любым пользователем, которым он хочет быть. NFSD на Linux делает эту проверку по умолчанию, но для других операционных систем вы должны разрешить эту проверку сами. Это должно быть описано в справочной странице nfsd для вашей операционной системы.

    Другая вещь. Никогда не экспортируйте файловую систему для хоста localhost или 127.0.0.1. Доверяйте мне.

    6.3 Безопасность сервера: portmapper

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

    Сначала мы отредактируем файл /etc/hosts.deny. Он должен содержать строку

    portmap: ALL
    
    

    которая запретит доступ всем. Это может быть слишком решительным, так что мы снова откроем доступ отредактировав файл /etc/hosts.allow. Но сначала нам надо определить, что мы туда поместим. Он должен перечислять все машины, которые должны иметь доступ к вашему portmapper. Среди множества работающих под Linux систем только некоторым машинам нужен любой доступ для любой работы. Portmapper обслуживает nfsd, mountd, ypbind/ypserv, pcnfsd, и r сервисы, такие как ruptime и rusers. Из них только nfsd, mountd, ypbind/ypserv и возможно pcnfsd имеют какое-либо значение. Всем машинам, которым необходим доступ к сервисам на вашей машине должно быть разрешено делать это. Скажем адрес машины равен 129.240.223.254 и что она находится в подсети 129.240.223.0, и она должна иметь доступ к сервисам на вашей машине (эти термины введены HOWTO по сетям, вернитесь к нему и освежите свои знания, если это необходимо). Затем мы напишем

    portmap: 129.240.223.0/255.255.255.0
    
    

    в hosts.allow. Это тоже самое, что и сетевой адрес, который вы даете командой route и маска подсети, которую вы даете ifconfig. Для устройства eth0 на этой машине ifconfig должен показывать

    ...
    
    eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:96:D5:56
    
     inet addr:129.240.223.254 Bcast:129.240.223.255 Mask:255.255.255.0
    
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    
     RX packets:360315 errors:0 dropped:0 overruns:0
    
     TX packets:179274 errors:0 dropped:0 overruns:0
    
     Interrupt:10 Base address:0x320 
    
    ...
    
    

    и netstat -rn должен показывать

    Kernel routing table
    
    Destination Gateway Genmask Flags Metric Ref Use Iface
    
    ...
    
    129.240.223.0 0.0.0.0 255.255.255.0 U 0 0 174412 eth0
    
    ...
    
    

    (Сетевой адрес находится в первой колонке).

    Файлы hosts.deny и hosts.allow описаны в справочных страницах с теми же именами.

    ВАЖНО: Не помещайте ничего кроме IP НОМЕРОВ в строках portmap в этих файлах. Поиск имен машин может вызвать активность portmap, которая вызовет поиск имен машин, которое вызовет portmap, которое вызовет...

    Вышеприведенные вещи должны вызвать переключение вашего сервера. Остающаяся проблема в том, что кто-то взломает бюджет администратора (или загрузит MS-DOS) на машине, которой доверяют и использует эти привелегии для посылки запросов на безопасный порт, как любой пользователь, которым он захочет быть.

    6.4 NFS и firewall

    Очень хорошая идея защитить порты nfs и portmap с помощью firewall на вашем маршрутизаторе или firewall. Nfsd работает на порту 2049, на обоих протоколах udp и tcp. Portmapper работает на порту 111, tcp и udp, и mountd работает на портах 745 и 747, tcp и udp. Обычно. Вы должны проверить номера портов, используя команду rpcinfo -p.

    Если вы хотите использовать NFS сквозь firewall, то есть опции для новых версий NFSd и mountd, для того, чтобы заставить их использовать специфические (нестандартные) порты, которые могут быть открыты в firewall.

    6.5 Резюме

    Если вы используете hosts.allow/deny, root_squash, nosuid и привилегированные порты в программном обеспечении portmapper/nfs, то вы можете избежать известных ошибок в nfs и можете чувствовать себя почти в безопасности. Но все равно: Когда взломщик имеет доступ к вашей сети, то он/она может добавить странные команды в ваш файл .forward или почтовый ящик, когда /home или /var/spool/mail смонтирован через NFS. По той же причине, вы никогда не должны осуществлять доступ к вашим личным ключам PGP через nfs. Или по крайней мере вы должны знать какой риск существует. И знать о нем хотя бы немного.

    NFS и portmapper создают комплексную систему и поэтому не полностью невероятно,что новые ошибки будут найдены, либо в основе проекта, либо в реализации, которую мы используем. Также могут быть известные дыры, которые кто-нибудь использует. Но такова жизнь. Чтобы быть в курсе таких вещей, вы должны как минимум читать группы новостей comp.os.linux.announce и comp.security.announce, как абсолютный минимум.

    7. Контрольный список монтирования

    Это раздел основан на контрольном списке проблем монтирования, этот документ написан в IBM Corp. Я благодарен им за то, что они сделали его доступным для использования в этом документе. Если у вас есть проблема с монтированием файловой системы NFS, то пожалуйста проверьте это список до того как вы пошлете сообщение об ошибке. Каждый пункт описывает конкретную проблему и ее решение.

  • Файловая система не экспортируется, или не экспортируется при запросе клиента.

    Исправление: Экспортируйте ее

  • Система разрешения имен не выдает соответствия со списком машин в файле exports.

    Например: список экспортируемых ресурсов задает экспортирование johnmad, но имя johnmad разрешается как johnmad.austin.ibm.com. Запрещено монтирование.

    Исправление: Экспортируйте ресурс для обоих форм имени машины.

    Это также случается если клиент имеет 2 интерфейса с разными имена для каждого из них и экспортируется только для одного указанного имени.

    Исправление: Экспортируйте оба интерфейса.

    Это также может произойти, если сервер не может выполнить функции lookuphostbyname или lookuphostbyaddr (это библиотечные функции) на клиенте. Убедитесь, что клиент может выполнять команды host <name>; host <ip_addr>; и обе они указывают на одну и ту же машину.

    Исправление: наладьте систему разрешения имен.

  • Файловая система была смонтирована, после того как NFS был запущен (на том сервере). В таком случае сервер экспортирует саму точку монтирования, а не смонтированную файловую систему.

    Исправление: Выключите NFSd и затем перезапустите его.

    Заметчание: Клиенты, которые уже были примонтированы к точке монтирования файловой системы будут иметь проблемы с доступом к ней после перезапуска сервера.

  • Дата наобум изменяется на одной или обоих машинах (это может спутать make).

    Исправление: Установите правильную дату.

    Автор HOWTO рекомендует использовать NTP для синхронизации часов. Поскольку существуют экспортные ограничения на NTP в US, то вы можете получить NTP для debian, redhat или slackware с ftp://ftp.hacktic.nl/pub/replay/pub/linux или с сервера-зеркала.

  • Сервер не допускает монтирования от пользователя, который находится больше чем в 8 группах.

    Исправление: уменьшите количество групп в которые входит пользователь или смонтируйте под именем другого пользователя.

  • 8. Часто Задаваемые Вопросы (FAQ)

    Это раздел часто задаваемых вопросов (FAQ). Большая часть его написана Alan Cox.

  • Я получаю сообщения об ошибках stale nfs handle (устарелый дескриптор nfs) при использовании Linux как сервера nfs.

    Это вызывается ошибкой в одной из устаревших версий nfsd. Это исправлено в nfs-server2.2beta16 и более поздних.

  • Когда я пытаюсь примонтировать файловую систему я получаю сообщение
     cant register with portmap: system error on send
    
     (не могу зарегистрироваться с помощью portmap: системная ошибка при посылке)
    
    

    Вы вероятно используете систему Caldera. Это ошибка в скриптах rc. Пожалуйста свяжитесь с Caldera для получения исправления.

  • Почему я не могу выполнить файл после копирования его на NFS сервер?

    Причина в том, что nfsd кэширует дескрипторы открытых файлов для улучшения производительности (помните, что он запущен в пространстве пользователей). Пока nfsd держит файл открытым (как в этом случае, после записи в него) ядро не позволит вам выполнять его. Nfsds новее чем примерно выпуска весны 95 держат файлы открытыми в течении нескольких секунд, более старые могут держать файл открытым в течении нескольких дней.

  • Мои файлы на NFS все считаются с правом только на чтение

    По умолчанию сервер NFS для Linux выдается все как только для чтения. Перечитайте справочные страницы по exports и nfsd. Вам необходимо изменить файл /etc/exports.

  • Я монтирую файловую систему с сервера nfs под linux и пока работает команда ls я не могу читать или записывать файлы.

    На старых версиях Linux вы должны монтировать сервер NFS с опциями rsize=1024,wsize=1024.

  • Я монтирую файловую систему с сервера NFS под Linux с размером блока между 3500-4000 и это регулярно роняет машину с Linux

    Обычно не делайте так.

  • Может Linux делать NFS по TCP

    Нет

  • Я получаю странные ошибки при монтировании машины с машины под Linux.

    Убедитесь6 что ваш пользователь находится в 8 или меньшем количестве групп. Старые сервера требую этого.

  • Когда я перезагружаю свою машину она иногда вешается при попытке отмонтироваться от зависшего сервера NFS.

    Не отмонтируйтесь от серверов NFS при перезагрузке или выключении, просто проигнорируйте его, ничто не повредится, если вы не отмонтируетесь от него. Команда будет выглядеть следующим образом umount -avt nonfs.

  • Клиент NFS для Linux работает очень медлено при записи на системы Sun и BSD.

    Обычно NFS записывает в синхронном режиме (вы можете запретить это, если вы считаете, что вы не рискуете потерять данные). Хуже всего то, что ядра произошедшие от BSD не могут работать с маленькими блоками. Так когда вы пишете 4K данных с машины под Linux в 1K пакетах, то BSD выполняет это следующим образом

     прочитать страницу размером 4K
    
     изменить 1K
    
     записать страницу размером 4K обратно на диск
    
     прочитать страницу размером 4K
    
     изменить 1K
    
     записать страницу размером 4K обратно на диск
    
     и т.д...
    
    

  • 9. Экспортирование файловых систем

    Способ экспортирования файловых систем с помощью NFS не является полностью совместимым между платформами. В этом случае отличаются Linux и Solaris 2. Этот раздел поверхностно перечисляет способы сделать это на большинстве систем. если ваша система не была перечислена, то посмотрите справочные страницы по вашей операционной системе. Ключевые слова следующие: nfsd, system administration tool (утилиты системного администрирования), rc scripts (скрипты ресурсов), boot scripts (скрипты загрузки), boot sequence (последовательность загрузки), /etc/exports, exportfs. Я буду использовать один пример для всего раздела: Как экспортировать /mn/eris/local для apollon с правами на чтение/запись.

    9.1 IRIX, HP-UX, Digital-UNIX, Ultrix, SunOS 4 (Solaris 1), AIX

    Эти операционные системы используют традиционный формат экспортирования Sun. В файле /etc/exports напишите:

    /mn/eris/local -rw=apollon
    
    

    Полная документация находится в справочной странице exports. После редактирования файла запустите exportfs -av для экспортирования файловых систем.

    точный синтаксис команды exportfs различается. На некоторых операционных системах вы можете обнаружить, что введенные строки читаются как:

    /mn/eris/local apollon
    
    

    или даже ухудшаясь вот так:

    /mn/eris/local rw=apollon
    
    

    Я рекомендую быть формальным. Вы рискуете, что если следующая версия exportfs будет другая и тогда все внезапно перестанет работать.

    9.2 Solaris 2

    Sun полностью переизобрел колесо при разработке Solaris 2. Так что он полностью отличается от других операционных систем. ТО, что вам нужно сделать -- это отредактировать файл /etc/dfs/dfstab. В нем вы помещаете команды организации доступа (share) как описано в справочной странице share(1M). Примерно такие:

    share -o rw=apollon -d "Eris Local" /mn/eris/local
    
    

    После редактирования запустите программу shareall для экспортирования файловой системы.

    10. PC-NFS

    Вы не должны запускать PC-NFS. Вы должны запустить samba.

    Извинение: Я ничего не знаю о PC-NFS. Если кто может написать что-нибудь о нем, то пожалуйста сделайте это и я включу материал здесь.



    www.linuxcenter.ru

    Строим сеть грамотно 27-12-2006
    Мини-HOWTO: Корневой NFS 24-03-2008 Строим сеть грамотно
    Мини-HOWTO: Корневой NFSAndreas Kostyrkaandreas@ag.or.at Перевод: Станислав Рогин, ASPLinux АннотацияВ этом документе дается объяснение того, как настроить "бездисковую" рабочуюстанцию на Linux, корневая файловая система которой подключена через NFS.Новую версия этого Мини-Howto можно найти по адресуftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root или на любом егозеркале РЯДО...


    LINUX PLIP MINI-HOWTO 24-03-2008 Строим сеть грамотно
    LINUX PLIP MINI-HOWTOAndrea Controzzicontrozz@cli.di.unipi.it Перевод: Денис Дементьев, ASPLinux АннотацияИспользование информации этого HOWTO позволит вам настроить и использовать протокол параллельного интерфейса (Parallel Line Interface Protocol).СодержаниеВступление: что такое PLIP, и для чего он нужен?Аппаратное обе...


    Как бороться со сменой IP адресов клиентами локальной сети? 24-03-2008 Строим сеть грамотно
    Keywords: arp mac ethernet ifconfig freebsd limit securityFrom: Alexander V. NaumochkinNewsgroups: http://www.unixfaq.ruDate: Mon, 17 May 2004 18:21:07 +0000 (UTC)Subject: Как бороться со сменой IP адресов клиентами локальной сетиОригинал: http://www.unixfaq.ru/index.pl?req=qs&id=169 Как бороться со сменой IP адресов клиентами локальной сети? Оглавление Статический ARPСтатический ARP + NOARPPort SecurityТуннелировани...


    Использование бездисковых Linux-станций с загрузкой по сети 24-03-2008 Строим сеть грамотно
    Использование бездисковых Linux-станций с загрузкой по сетиВпервые опубликованно в журнале "Системный администратор" N11/2004Постановка задачиРабота сотрудника отдела автоматизации – это постоянная борьба спроблемами и решение задач, которые попеременно подкидываютпользователи, разработчики эксплуатируемого программного обеспечения ируководство организации. И если два первых направления работы – этопросто «борьба за живучесть кора...

    Опыт внедрения OpenVPN 24-03-2008 Строим сеть грамотно
    Опыт внедрения OpenVPNПочему OpenVPN?На ключевое слово vpn Google откликнулся 17 000 000 ссылок. Это приятно удивило. Немного сузив поиск наткнулся на сайтopenvpn.sourceforge.net. Вводная статья обещала простоту инсталяции и конфигурирования,а главное,- возможность созданиятунеля для большинства наиболее распрастранённых операционных систем, включая Linux,SUN Solaris,*BSD, Mac OS X, w2k, w2k3.Это то что мне нужно... Внешний...
     

     
    Copyright by www.scripts.net.ua.
    Rambler's Top100 Рейтинг@Mail.ru