Сетевая файловая система на базе протокола NFS

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

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 27.11.2013
Размер файла 39,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Сетевая файловая система на базе протокола NFS

  • Содержание
  • 1. Совместное использование файлов с помощью NFS
    • 1.1 Использование серверов NFS
    • 1.2 Серверы NFS для системы Linux
    • 1.3 Пользовательский режим и режим ядра
    • 1.4 NFSv2 и NFSv3
    • 1.5 Отображение портов
    • 1.6 Разделение файлов с помощью NFS
    • 1.7 Определение экспортируемых каталогов
    • 1.8 Средства контроля доступа
    • 1.9 Монтирование экспортируемых каталогов
    • 1.10 Повышение производительности системы
    • 1.11 Отображение пользовательских имен
    • 1.12 Резюме
    • файл порт каталог пользовательский

1. Совместное использование файлов с помощью NFS

Протоколы Server Message Block (SMB)/Common Internet Filesystem (CIFS), рассмотренные в предыдущей главе, очень удобны для организации совместного доступа к файлам и принтерам клиентов, работающих под управлением DOS, Windows, OS/2 и многих других систем. Однако эти протоколы не поддерживают некоторые характеристики файловых систем UNIX и Linux, например, не позволяют задавать владельца файла и права доступа. Поэтому для разделения файлов в системах UNIX и Linux целесообразно использовать другой протокол, а именно NFS (Network Filesystem - сетевая файловая система). В отличие от SMB/CIFS, NFS не поддерживает принтеры. Вопросы совместного использования принтеров будут рассмотрены в главе 9.

1.1 Использование серверов NFS

Как правило, серверы NFS применяются для разделения файлов в системах UNIX и Linux. Необходимость в совместном доступе к файлам может возникнуть по разным причинам. Возможно, вы захотите хранить на сервере программы большого объема для того, чтобы их можно было запускать на клиентских машинах с дисками малого размера. Часто сервер NFS используют как централизованное хранилище файлов; изменения, внесенные в файл, сразу становятся доступными всем пользователям. Если в сети применяется централизованная система регистрации, например Kerberos, целесообразно размещать на сервере NFS рабочие каталоги пользователей. Такой подход обеспечивает высокую степень гибкости. В этом случае пользователь перестает быть "привязанным" к своей рабочей станции и может регистрироваться с любого компьютера и работать со своими данными. Существует множество других ситуаций, в которых оправдано применение серверов NFS. Например, вы можете разместить рабочие каталоги пользователей на локальных компьютерах, а сервер NFS использовать для обмена файлами или организовать чтение данных из статической базы, расположенной на сервере.

Несмотря на то что система NFS ориентирована на использование в сетях, состоящих в основном из компьютеров под управлением UNIX, клиенты и серверы NFS разработаны и для других систем, например для Windows, OS/2 и MacOS. Выбор инструмента разделения файлов зависит от конкретной ситуации. В большинстве случаев наилучшие результаты достигаются при использовании в системе Linux протокола, специально разработанного для других систем. Примером подобного решения является организация сервера SMB/CIFS на компьютере под управлением Linux. Кроме того, для настройки сервера Samba в системе Linux потребуется намного меньше времени и усилий, чем для инсталляции и конфигурирования средств поддержки NFS на клиентских компьютерах. Если же в сети в основном используются машины под управлением UNIX и Linux и лишь несколько компьютеров Windows или MacOS, предпочтительнее использовать для разделения файлов систему NFS. (Система MacOS X базируется на UNIX, поэтому средства поддержки NFS хорошо работают в этой среде, однако для их настройки с помощью графического интерфейса MacOS придется затратить много усилий.)

ВНИМАНИЕ Как вы узнаете из последующих разделов, в процессе работы NFS не поверяет пароли и не реализует другие подобные способы контроля доступа. Вместо этого NFS использует принцип доверия, согласно которому сервер полагается на средства аутентификации пользователей, применяемые на клиентских машинах. На сервере NFS вы определяете узлы, пользующиеся доверием, и задаете их IP-адреса. Данный механизм защиты не сложно обойти, используя фальшивый IP-адрес или изменяя конфигурацию локальных компьютеров, поэтому, планируя систему NFS, надо уделять особое внимание безопасности данных. В частности, нельзя допускать передачу секретной информации средствами NFS. Если возникает необходимость обмена важными данными по локальной сети, для этого лучше использовать Samba или другие механизмы передачи, например, программу scp, которая входит в состав пакета SSH (Secure Shell - защищенная оболочка).

1.2 Серверы NFS для системы Linux

В 1998-2002 г. средства поддержки NFS в системе Linux претерпели ряд важных изменений; некоторые из таких изменений рассматриваются в данном разделе. Если вы используете старые дистрибутивные пакеты или устаревшую документацию, представленные здесь сведения позволят вам составить впечатление о реальном положении дел. Чаще всего сервер NFS, поставляемый в составе Linux, можно использовать для обмена данными, но в некоторых случаях, чтобы реализовать NFS-взаимодействие с другими компьютерами, вам придется установить более новое (а возможно, и более старое) программное обеспечение. Информацию о последних разработках в области NFS-обмена в системе Linux можно получить, обратившись по адресу http: //nfs.sourceforge.net.

1.3 Пользовательский режим и режим ядра

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

Необходимость обмена информацией между ядром и программой, выполняющейся в пользовательском режиме, снижает производительность системы. Чтобы устранить этот недостаток, надо изменить коды сервера NFS и конфигурацию ядра так, чтобы передачей данных занимались только функции ядра. Для этого необходимо установить опцию NFS Server Support в подменю Network File Systems меню File Systems (рис. 8.1). Сделав это, вы передадите ядру часть обязанностей сервера NFS. Кроме того, надо использовать код сервера NFS, непосредственно ориентированный на взаимодействие с ядром. Обычно программа, реализующая такой сервер, называется knfsd, в то время как стандартный сервер NFS носит имя nfsd.

В инструментах настройки ядра Linux также присутствует опция NFS File System Support. Эта опция включает в ядро средства поддержки клиента NFS, которые совместно с утилитой mount позволяют монтировать каталоги, экспортируемые удаленным сервером NFS, в локальной файловой системе. Средства поддержки клиента и сервера NFS в составе ядра не связаны друг с другом, и вы можете независимо включать или отключать любую из этих опций.

1.4 NFSv2 и NFSv3

Подобно другим протоколам и программам, средства NFS периодически пересматриваются и реализуются их новые версии. В 2002 г. широко использовалась последняя на тот момент версия 3 системы NFS, или NFSv3. (На самом деле в это время уже существовала версия NFSv4, но она находилась в стадии разработки. Дополнительную информацию о состоянии дел с NFSv4 можно найти, обратившись по адресу http://www.nfsv4.org.) Несмотря на наличие NFSv3 (и даже NFSv4), большинство существующих клиентов и серверов NFS поддерживают лишь NFSv2. To же самое можно сказать о ядре Linux 2.2.x. Возможность работы с NFSv3 была реализована в ядре лишь начиная с версии 2.2.18. (Для более ранних версий ядра существуют дополнительные модули, обеспечивающие поддержку NFSv3.) В NFSv3 были предусмотрены дополнительные возможности, например, улучшена блокировка файлов, повышена производительность операций записи за счет применения асинхронного режима (асинхронный режим был реализован и в программах поддержки NFSv2 в системе Linux, но соответствующие средства не соответствовали стандарту). Кроме того, NFSv3 позволяет работать с NQNFS (Not Quite NFS) и использовать соединения TCP (в NFSv2 был предусмотрен только UDP-обмен). Следует заметить, что в 2002 г. соединения TCP поддерживались в Linux лишь частично. Средства NFSv2 подходят для небольших сетей, в которых необходимость в обмене данными возникает лишь эпизодически, a NFSv3 (реализованные в полном объеме) можно использовать для обеспечения работы мощных серверов. Экспериментальные версии NFSv3 для Linux были реализованы плохо - они не поддерживали операции в асинхронном режиме. Для серверных программ ситуация несколько улучшилась с появлением ядра 2.4.x. Клиентские программы в ядре 2.4.17 работают по-прежнему медленно.

Если вы хотите обеспечить работу с сервером NFSv3, в котором операции NFS ускоряются за счет ядра, вы должны при установке конфигурации ядра выбрать опцию Provide NFSv3 Server Support (которая является подопцией обсуждавшейся ранее опции NFS Server Support). Аналогично, для использования средств NFSv3 клиентом надо выбрать опцию Provide NFSv3 Client Support. Протокол NFS обеспечивает совместимость с ранними версиями, поэтому если в вашей системе поддерживаются средства NFSv3, а на других компьютерах установлены лишь средства NFSv2, то узлы сети могут обмениваться данными по протоколу NFSv2.

Если вы хотите обмениваться данными по протоколу NFSv3, то, помимо установки опций ядра, вам надо использовать утилиты, поддерживающие эту версию. Для обеспечения работы клиента вам понадобятся nfs-utils 0.1.6 либо более поздняя версия и версия утилиты mount не ниже 2.10т. Эти инструменты содержатся в большинстве дистрибутивных пакетов; для их поиска можно воспользоваться средствами rpm или dpkg. Так, например, чтобы найти нужную версию mount, надо задать следующую команду:

$ rpm -q mount mount-2,llb-5mdk

В данном случае при выполнении команды было обнаружено, что в системе инсталлирована версия 2.1 lb утилиты mount, которая подходит для обеспечения работы клиента NFSv3.

1.5 Отображение портов

Большинство серверов TCP/IP принимают обращения от клиентов через порт с определенным номером. Так, например, сервер, реализующий протокол SMTP (Simple Mail Transfer Protocol - простой протокол передачи почты), использует при работе порт 25, а Web-сервер, поддерживающий протокол HTTP (Hyptertext Transfer Protocol - протокол передачи гипертекстовой информации), - порт 80. Обмен с сервером также может быть организован через нестандартный порт, но обычно конфигурацию сервера выбирают так, чтобы для обращения к ним не требовалась специальная настройка клиентов. NFS представляет собой класс протоколов, которые действуют несколько по-иному. При работе NFS применяется процедура отображения портов. Специальная программа связывается с фиксированным портом (номер порта 111) и перенаправляет обращения клиентов на требуемые порты. (NFS чаще всего использует порт UDP 2049, но NFSv3 предполагает также работу через порт TCP 2049.) Весь процесс обмена данными базируется на применении протокола RPC (Remote Procedure Call - удаленный вызов процедур).

Процедуру отображения портов реализует программа portmap, которая обычно запускается при выполнении сценария загрузки сетевых средств. Кроме того, для нее может быть создан отдельный сценарий. Несмотря на то что portmap не работает совместно с суперсервером inetd, в последних версиях этой программы предусмотрена возможность взаимодействия с TCP Wrappers. Ограничив доступ к программе отображения портов теми компьютерами, которым действительно необходимо взаимодействовать с сервером, вы существенно повысите безопасность системы. Чтобы запретить доступ всем узлам без исключения, надо включить в файл /etc/hosts.deny следующую запись: portmap : ALL

Затем можно разрешить обращение к portmap отдельных компьютеров или сетей, включая их адреса в файл /etc/hosts.allow.

portmap : 192.168.1.

В главе 4 обсуждались вопросы настройки TCP Wrappers, в частности, способы описания клиентов. При работе с программой отображения портов не следует указывать доменные имена клиентов, так как процедура преобразования имен может привести к повторному обращению к portmap. Это, в свою очередь, приведет к необходимости нового преобразования адресов. Такая бесконечная последовательность вызовов не даст никакого результата, а лишь создаст дополнительную нагрузку на процессор. Поэтому для указания клиентов надо использовать их IP-адреса.

Для обеспечения NFS-обмена недостаточно вызвать программу отображения портов. Вам также надо определить разделяемые каталоги (этот вопрос будет рассматриваться в следующем разделе) и запустить сам сервер NFS. Для запуска сервера NFS используется сценарий SysV (обычно он называется nfs). В некоторых версиях Linux приходится также запускать дополнительные сценарии SysV. При инсталляции NFS эти сценарии устанавливаются автоматически. Изменив конфигурацию сервера, необходимо перезапустить его; это можно сделать, используя опцию restart сценария. Соответствующая команда выглядит следующим образом: /etc/rc. d/init. d/nf s restart.

1.6 Разделение файлов с помощью NFS

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

1.7 Определение экспортируемых каталогов

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

экспортируемый_каталог клиент!(опции) {клиент2(опции) [...]]

Имя экспортируемого каталога может иметь вид /home или /us r/XI1R6. Вы можете указать любой каталог, однако некоторые каталоги экспортировать нецелесообразно. Так, например, предоставив доступ к /etc или /ргос, вы создадите угрозу безопасности компьютера, так как удаленные пользователи получат доступ к информации, определяющей конфигурацию системы. Некоторым может показаться, что, экспортируя каталог /dev, вы предоставите удаленным пользователям доступ к устройствам сервера, но это не так. Файлы, содержащиеся в этом каталоге, всегда определяют устройства локального компьютера, поэтому, смонтировав /dev, вы получите лишь копии файлов, с помощью которых можно в лучшем случае взаимодействовать с устройствами на клиентской машине. Если конфигурация компьютера, на котором расположен сервер NFS, отличается от конфигурации клиентской машины, то после монтирования /dev на клиентской машине станут доступны файлы, которые описывают несуществующие устройства. Использование таких файлов может представлять опасность для клиентской системы. (Эту проблему можно разрешить, используя опцию nodev, которая будет описана ниже.)

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

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

* Имя одного компьютера. Если вы укажете имя конкретного компьютера, например larch или larch, threeroomco. com, клиентские программы, расположенные на этом компьютере, получат доступ к разделяемому каталогу. Если имя домена не указано, предполагается, что клиент принадлежит тому же домену, что и сервер.

* Группа клиентов, определенная с помощью символов групповой операции. При описании клиента могут быть использованы знак вопроса (?), заменяющий один символ, и звездочка (*), заменяющая группу символов в имени компьютера. Например, идентификатор * . threeroomco. com определяет все машины в домене threeroomco. com. Символы (?) и (*) не заменяют точку (.), поэтому с их помощью нельзя определить компьютеры, принадлежащие поддоменам. Например, выражение *. threeroomco. сотне описывает компьютер mulberry.bush. threeroomco.com.

* Группа NIS. Если в вашей сети присутствует сервер NIS (Network Information Service - сетевая информационная служба), вы можете задавать группы NIS, указывая в начале имени группы символ @.

* Группа клиентов, заданная с помощью IP-адреса сети. Ограниченную группу клиентов можно описывать, указывая адрес и маску подсети, например 172.19.0.0/ 255.255.0.0. Допускается также определение маски подсети как число битов, соответствующих адресу посети, например 172.19.0.0/16. (Задавая IP-адрес одного компьютера, маску подсети можно не указывать.)

С точки зрения безопасности системы предпочтительнее использовать для идентификации компьютеров их IP-адреса, так как если злоумышленник получит доступ к серверу DNS или NIS, доменные имена и имена групп могут быть переопределены. IP-адрес также можно подделать, особенно если попытка незаконного доступа осуществляется из локальной сети, но использование IP-адреса исключает по крайней мере один способ атаки. С другой стороны, указание компьютеров с помощью IP-адресов может быть неудобным, в особенности если адреса часто меняются. Так, например, происходит, если адреса компьютерам выделяет сервер DHCP, работа которого рассматривалась в главе 5 данной книги.

СОВЕТ Как вы уже знаете, доступ к программе portmap можно ограничить с помощью TCP Wrappers. При этом указание идентификаторов клиентов в описании экспортируемых каталогов может показаться излишней мерой. Это не совсем верно. Ограничивая доступ к серверу, надо использовать для этого все доступные способы. Дело в том, что средства, блокирующие обращения, могут быть сконфигурированы неверно, а при наличии недостатков в системе защиты их можно обойти. В этом случае избыточные механизмы ограничения доступа будут очень полезны. Рекомендуется также запретить обращение ряда узлов к серверу, применяя для этого фильтрацию пакетов. Данный способ будет рассматриваться в главе 25.

В состав многих дистрибутивных пакетов Linux входят средства брандмауэра; они легко конфигурируются в процессе инсталляции. Некоторые из них, например брандмауэр для Red Hat, уже настроены с учетом блокирования доступа к серверу NFS, поэтому в некоторых случаях разрешить доступ бывает достаточно трудно. Если у вас возникнут проблемы, связанные с взаимодействием клиентов с сервером NFS, ознакомьтесь с материалом, изложенным в главе 25, он поможет вам изменить настройку брандмауэра.

Для каждого клиента или группы клиентов можно задать отдельный набор опций. Эти опции помещаются в скобки и указываются после идентификатора клиента. Опции отделяются одна от другой запятыми. Некоторые из них управляют доступом; их использование рассматривается в следующем разделе. Другие опции задают характеристики сервера и влияют на производительность. Примеры таких опций приведены ниже.

* sync и async. Данные опции задают соответственно синхронный и асинхронный режимы выполнения операций. При записи в асинхронном режиме сервер может сообщить клиенту о том, что операция завершена, в то время как запись на диск еще продолжается. Это ускоряет процесс обмена данными, но создает угрозу их целостности; в случае выхода сервера из строя информация будет утеряна. Официально считается, что NFSv2 не поддерживает асинхронные операции, но, несмотря на это, сервер NFS в системе Linux позволял выполнять действия в асинхронном режиме. NFSv3 поддерживает асинхронный режим, а для снижения риска к клиенту предъявляются требования буферизации данных. По умолчанию в серверах NFSv3 предполагается опция async, но в бета-версиях программ NFS для Linux данная опция игнорируется.

* wdelay и no_wdelay. Если сервер NFS, работающий в системе Linux, предполагает, что последующие запросы могут изменить данные, предназначенные для записи на диск, он может отложить на некоторое время процедуру записи. Во многих случаях такой подход позволяет увеличить производительность сервера. Изменить принцип записи можно, указывая опции wdelay и no_wdelay. Опция wdelay предполагается по умолчанию.

1.8 Средства контроля доступа

Многие из опций, которые указываются для каждого клиента в файле /etc/exports, предназначены для управления доступом. Как было сказано ранее, NFS использует механизм доверия, поэтому сервер не может проверить имя пользователя и пароль, как это происходит в системе Samba. Если клиент объявлен как заслуживающий доверия, то ре¬шение о предоставлении доступа принимается на основании сведений о принадлежности файла владельцу и правах. Некоторые из опций управления доступом, встречающиеся в файле /etc/exports, перечислены ниже.

* secure и insecure. По умолчанию сервер NFS считает, что запросы должны поступать с защищенных портов, номера которых не превышают 1023. В системах UNIX и Linux доступ к таким портам имеет только пользователь root (право работы через порты с номерами 1024 и выше предоставлено всем пользователям).

Разрешая обращения клиентов, которые используют номера портов, превышающие 1023 (т. е. задавая опцию insecure), вы предоставляете пользователям, не обладающим привилегиями, дополнительный шанс осуществить несанкционированный доступ к серверу. В некоторых случаях, например при тестировании клиентских программ, использование опции insecure может быть оправдано.

* го и rw. Опцияго разрешает только читать содержимое экспортируемого каталога, а опция rw предоставляет также возможность записывать данные в этот каталог.

В сервере knfsd, использующем функции ядра, по умолчанию принимается опция "ro", а в серверах, выпущенных ранее, по умолчанию предполагалось, что задана опция "rw". Чтобы предотвратить возникновение ошибок, рекомендуется задавать требуемую опцию в явном виде.

* hide и nohide. Предположим, что на сервере NFS каталог/usr размещен в одном разделе, а каталог /usr/local - в другом. Если вы экспортируете каталог /usr, должен ли экспортироваться также и каталог /usr/local? Ответ на данный вопрос зависит от используемого сервера. В ядре 2.2.x для этого была предусмотрена специальная опция. В последних версиях сервера NFS вы можете управлять его поведением, задавая опции hide и nohide. Опция hide скрывает смонтированные разделы, а опция nohide выполняет противоположное действие. Некоторые клиенты допускают ошибки в работе со смонтированными разделами, поэтому в ряде случаев приходится задавать опцию hide. При этом клиент должен самостоятельно монтировать оба каталога.

* noaccess. Данная опция запрещает доступ к каталогу, даже если он является подкаталогом экспортируемого каталога. Предположим, например, что вы хотите экспортировать поддерево /home, за исключением каталога /home/abrown. Для этого надо создать в файле /etc/exports обычную запись для каталога /home и отдельную запись для каталога /home/abrown, указав в ней опцию noaccess. В результате пользователи не смогут обращаться к каталогу /home/abrown.

* subtree_check и no_subtree_check. В некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выподнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опции no_subtree_check. Опция subtree_check, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска.

* root_squash иo_root_squash. По умолчанию сервер NFS отвергает обращения, которые исходят от пользователя root, работающего на клиентском компьютере. Эти обращения интерпретируются как попытки доступа локального анонимного пользователя. Такая мера повышает уровень безопасности системы, предполагая, что привилегии root на удаленном компьютере могли быть получены незаконно. Если же вам необходимо выполнять администрирование сервера с удаленного узла, то, для того, чтобы иметь возможность работать с привилегиями локального пользователя root, надо задать опцию noroot_squash. Подобная мера может потребоваться, например, при создании резервных копий.

* all_squash и no_all_squash. В обычных условиях обращения от пользователей принимаются, но иногда приходится запрещать доступ к экспортируемым каталогам, содержащим важные данные. Сделать это можно с помощью опции all_squash. Опция no_all_squash отменяет действие all_squash.

* anonuid и anongid. Анонимным пользователем, обращения которого отвергаются, обычно считается пользователь nobody. Вы можете переопределить такую установку, указав идентификатор пользователя (UID) и идентификатор группы (GID). Сделать это позволяют соответственно опции anonuid и anongid. В этом случае пользователю root, работающему на удаленном клиенте, будет предоставлен доступ с привилегиями указанного пользователя. Эти опции также приходится указывать при работе с клиентами PC/NFS, которые поддерживают лишь одного локального пользователя. Такая опция должна сопровождаться знаком равенства и идентификатором пользователя или группы, например anonuid=504.

Пример файла /etc/exports показан в листинге 8.1. В этом файле описаны два экспортируемых каталога: /usr/XllR6 и /home. Кроме того, в нем содержится третья запись, запрещающая с помощью опции noaccess обращения к каталогу /home/abrown. (Поскольку последняя запись лишь ограничивает доступ, в ней не указан конкретный узел; обращаться в данному каталогу не может ни один клиент.) Каталоги /usr/XllR6 и /home доступны для компьютера gingko и всех узлов сети 192.168.4.0/24, однако при экспортировании этих каталогов заданы различные опции. Каталог /usr/XHR6 доступен только для чтения, а в каталог /home клиенты имеют также право записывать данные. На компьютере gingko для доступа к /usr/XllR6 задан идентификатор анонимного пользователя, равный 514, а при обмене с каталогом /home не выполняется контроль поддерева.

Листинг 8.1. Пример файла /etc/exports

7usr/XllR6 gingko(ro,anonuid=504) 192.168.4.0/24(гоj ~ "~

/home gingko(rw,no_subtree_check) 192.168.4.0/255.255.255.0(rw)

/home/abrown (noaccess)

1.9 Монтирование экспортируемых каталогов

На стороне клиента экспортируемые каталоги выглядят как разделы диска. Для их монтирования используется команда mount, но при ее вызове указываются сервер NFS и монтируемый каталог. Эти данные задаются в формате сервер-.путь к монтируемому каталогу. Так, например, следующая команда монтирует экспортируемый каталог /home в точке файловой системы /mnt/userfiles:

# mount larch:/home /mnt/userfiles

Если вы хотите, чтобы экспортируемый каталог был постоянно доступен, вам надо создать запись в файле /etc/fstab. Как и при использовании команды mount, вместо имени устройства вы указываете имя сервера и путь к экспортируемому каталогу. Тип файловой системы задается как nfs (при желании вы можете задать соответствующую опцию и при вызове mount, но это не обязательно, поскольку Linux автоматически распознает тип файловой системы). Приведенная ниже запись в файле /etc/fstab выполняет те же действия, что и рассмотренный ранее вызов утилиты mount.

larch:/home /mnt/userfiles nfs defaults О О

В результате пользователь, обращаясь к каталогу /mnt/userfiles, на самом деле увидит содержимое каталога /home на узле larch. С содержимым смонтированного каталога NFS можно выполнять большинство операций, допустимых для локального раздела Linux. Например, вы можете читать, редактировать и удалять файлы, а также выполнять прочие действия. Существуют также операции, которые недопустимы для экспортируемых каталогов, например, вы не можете объявлять раздел NFS как файл подкачки. В большинстве случаев эффективность работы с экспортируемыми каталогами NFS ниже, чем с разделами локального диска, так как обмен по сети осуществляется значительно медленнее, чем обмен с современными жесткими дисками. Однако в отдельных случаях, например при использовании гигабитовой Ethernet-сети, производительность NFS-обмена может даже превышать производительность работы с локальными устройствами, особенно если на клиентской машине используются устаревшие диски. На производительность системы NFS существенное влияние оказывают также быстродействие диска сервера и число клиентов.

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

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

* hard. Если сервер выходит из строя или не отвечает на запросы, программа, которая пытается обратиться к этому серверу, ожидает ответа неопределенно долгое время. Такое поведение системы реализовано по умолчанию.

* soft. Если сервер NFS часто выходит из строя и становится недоступным, целесообразно использовать данную опцию. Она позволяет ядру возвращать программе сообщение об ошибке в том случае, если сервер не отвечает в течение установленного времени (это время задается с помощью опции timeo-время).

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

* nosuid. Эта опция не позволяет клиенту обрабатывать бит SUID в файлах, находящихся в экспортируемом каталоге. Эта опция также призвана повысить защиту системы. Она не дает возможности использовать бит SUID для незаконного получения специальных полномочий.

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

Перечисленные опции можно задавать при вызове команды mount, указывая их после -о, например:

# mount -о поехес,nodev larch:/home /mnt/userfiles

Если вы создаете запись в файле /etc/f stab, данные опции указываются в специально предназначенном поле (в этом поле в приведенном выше примере находилось ключевое слово defaults).

1.10 Повышение производительности системы

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

* Оптимизация размера передаваемых блоков. Опцииrsize и wsize программы mount определяют размер блоков данных, передаваемых между клиентом и сервером. Размер блока по умолчанию зависит от используемых программ, но чаще всего принимается значение 4096. Команда, в которой явно задается размер блока, выглядит приблизительно так: larch: /home /mnt/userf iles -о rsize=8192. При создании записи в файле /etc/f stab эти опции помещаются в специаль¬ное поле (в приведенном ранее примере в этом поле указано значение defaults).

* Оптимизация за счет исключения информации об обращении к файлу. Опция

* noatime утилиты mount сообщает Linux о том, что информация о времени обращения к файлу не должна обновляться. В обычных условиях Linux записывает сведения о времени создания и изменения файла, а также о времени последнего обращения к нему. Отказавшись от данных о времени обращения, можно повысить производительность системы.

* Выбор количества экземпляров сервера NFS. Как правило, в сценарии запуска сервера NFS предусматривается одновременное выполнение восьми экземпляров этой программы. Если нагрузка на систему не велика, с ней может справиться и меньшее количество серверов. Если же система постоянно обрабатывает запросы, восьми серверов может оказаться недостаточно. Недостаток серверов при большой нагрузке на систему приводит к тому, что для установления соединения с клиентом потребуется неоправданно большое время. Увеличить производительность можно, выбрав наиболее подходящее число экземпляров сервера. Обычно это значение задается в начале сценария и имеет вид RPCNFSDCOUNT=8.

* Устранение причин снижения производительности, не связанных с работой средств поддержки NFS. Производительность NFS может снижаться по ряду причин, многие из которых непосредственно не связаны с работой сети. Например, если ваша сетевая карта работает медленно, эффективность NFS-обмена будет низкой. Качество работы сервера NFS существенно зависит от используемого жесткого диска. Важно, чтобы данное устройство было достаточно быстродействующим и не создавало излишней нагрузки на центральный процессор. (Для сервера хорошо подойдет EIDE-контроллер с поддержкой адаптера DMA или SCSI; производительность устройств SCSI выше, чем производительность дисков EIDE.)

Если производительность сервера NFS недостаточна, необходимо прежде всего выяснить, что является источником проблем: программное обеспечение сервера NFS, клиент-программы или конфигурация сети. Возможно также, что производительность снижается по другим причинам, например, из-за недостаточной эффективности работы жестких дисков. Выяснить это можно, выполняя тестирование с использованием различных протоколов и с участием разных клиентов. (Для проверки производительности жестких дисков можно вызвать команду hdparm, указав опцию -t.)

1.11 Отображение пользовательских имен

На компьютере под управлением Linux, работающем независимо от других машин, за отображение пользовательских имен в числовые идентификаторы (UID) отвечает файл /etc/passwd. Аналогично, информация о соответствии имен групп и их идентификаторов (GID) хранится в файле /etc/group. В системе NFS существуют как минимум два независимых файла /etc/passwd: один - на сервере и по одному - на каждом клиенте. При этом может возникнуть проблема, связанная с тем, что одному и тому же пользователю на сервере и на клиентской машине будут соответствовать различные UID. Эта проблема может быть решена различными способами.

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

Самым простым решением описанной выше проблемы отображения пользовательских имен является синхронизация UID и GID на клиентской машине и на сервере. Например, если некоторому пользователю на сервере соответствует идентификатор 504, необходимо принять меры к тому, чтобы и на клиентском компьютере его UID был также равен 504. Аналогичным образом должны быть синхронизированы GID. Если сеть насчитывает большое число компьютеров, синхронизация UID и GID займет очень много времени. Однако в небольшой сети, при условии, что число пользователей в ней невелико, действия по синхронизации могут быть выполнены относительно просто. Привести в соответствие существующие пользовательские идентификаторы можно с помощью утилиты usermod. Например, для того, чтобы изменить UID пользователя abrown с 507 на 504, надо вызвать следующую команду:

# usermod -u 504 abrown

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

Команда groupmod аналогичным образом изменяет информацию о группе. В отличие от команды usermod, новый идентификатор группы задается с помощью опции -д. Например, чтобы задать GID группы proj ect3 равным 127,надо выполнить следующую команду:

# groupmod -g 127 project3

ВНИМАНИЕ Не пытайтесь изменить UID или GID в то время, когда пользователь, идентификатор которого должен быть скорректирован или члены группы зарегистрированы в системе. Это приведет к тому, что пользователь не сможет сохранить результаты своей работы, прочитать файл, запустить программу и выполнить другие подобные действия. Если вы внесли такие изменения непреднамеренно, постарайтесь отменить их либо предложите пользователю завершить сеанс работы и зарегистрироваться повторно. Если при этом пользователю необходимо сохранить данные, их можно записать в один из общедоступных каталогов, например в/trap.

Говоря о данном способе синхронизации идентификаторов, важно заметить, что имена пользователя на клиентской машине и на сервере не обязательно должны совпадать. Например, один и тот же пользователь может иметь имя abrown на сервере и имя alyson - на клиентском компьютере. Когда этот пользователь, работая в клиентской системе, обращается к серверу, считается, что файлы на сервере принадлежат пользователю alyson. Если тот же пользователь зарегистрируется на сервере NFS, система сообщит, что владельцем файлов является abrown. Первоначально такая особенность затрудняет администрирование системы, но в некоторых ситуациях она может оказаться полезной. Обеспечить синхронизацию UID и GID можно, используя отдельный сервер для аутентификации пользователей как на клиентских компьютерах, так и на сервере NFS. В этом случае пользователь получит один и тот же UID, независимо от компьютера, на котором он зарегистрируется, а конкретной группе будет соответствовать единственный GID. В качестве такого средства аутентификации можно использовать систему Kerberos, которая была рассмотрена в главе 6. Кроме того, реализация NFS для Linux включает поддержку аутентификации NIS; для этой цели используется опция map_nis. Если вы включите эту опцию в файл /etc/exports для некоторого клиента, сервер NFS предоставит серверу NIS выполнить отображение пользовательского имени. Средства синхронизации идентификаторов пользователей, выполняемые на стороне сервера. Предположим, что вы занимаетесь администрированием сети, состоящей из двух компьютеров. На каждом узле этой сети существуют учетные записи для пользователей, перечисленных в табл. 1. В данном примере компьютер gingko выполняет функции сервера, а компьютер larch выступает в роли клиента. Только у одного из пользователей (j ames)идентификаторы на обоих компьютерах совпадают. Чтобы пользователь j ames мог обращаться к своим собственным файлам, никакие специальные меры не требуются. Работая на компьютере larch, alyson обнаружит, что его файлы, хранящиеся на gingko, принадлежат пользователю, идентифицировать которого невозможно (UID, равный 500, на компьютере larch отсутствует). Что касается остальных двух пользователей, Jennie и samuel, система сообщит, что каждый из них является владельцем файлов, принадлежащих на самом деле другому. Один из способов решения проблемы синхронизации пользовательских идентификаторов состоит в следующем. На сервере NFS создается файл соответствия идентификаторов, содержащий информацию, подобную приведенной в табл. 1. О наличии этого файла сервер оповещается посредством опции map_static; в качестве значения опции

Таблица 1. Идентификаторы пользователей на двух компьютерах

Пользователь

UID на gingko

UID на larch

alyson james Jennie samuel

500 501 502 503

504 501 503 502

задается имя файла соответствия идентификаторов. В файл /etc/exports включается запись, которая может выглядеть следующим образом:

/home larch(rw,map_static=/etc/nfs/larch-map)

Эта запись сообщает системе о том, что, предоставляя каталог /home пользователю larch, надо использовать файл соответствия идентификаторов с именем /etc/nfs/ larch-map. Поскольку опция map_static входит в состав списка опций для конкретного клиента, вы можете назначать разным клиентам различные файлы соответствия. Пример содержимого файла larch-map показан в листинге 2. Строки, в начале которых находится символ #, содержат комментарии. Строки, начинающиеся с uid, представляют информацию о соответствии пользовательских идентификаторов, а строки, в начале которых расположено ключевое слово gid, содержат сведения о соответствии идентификаторов групп. Первое из числовых значений (или диапазон значений) в строке представляет идентификатор на клиентской машине. Второе числовое значение соответствует идентификатору, в который должен отображаться UID или GID, полученный на удаленном компьютере. Например, из листинга 2 видно, что UID 504 на клиентском компьютере отображается в UID 500 на сервере. Если вместо идентификатора на сервере указан символ -, обращение данного пользователя или члена группы к серверу NFS запрещен. Такое обращение интерпретируется как попытка доступа анонимного пользователя.

Листинг 2. Пример содержимого файла соответствия идентификаторов

# Отображение идентификаторе

# удаленный локальный

uid 0-99 -

uid 504 500

uid 501 501

uid 503 502

uid 502 503

gid 0-99 -

gid 100-102 100

;ля клиента larch

# доступ запрещен

# доступ запрещен

В файле соответствия необходимо задать идентификаторы всех пользователей. Например, в листинге 8.2 указан UID 501, который отображается в тот же идентификатор на сервере. Отсутствующий UID приведет к некорректному отображению, что, в свою очередь, станет источником проблем. В листинге 8.2 явным образом указано, что попытки обращения с системных UID (с номерами меньше 100) должны отвергаться. Аналогичное правило задано для идентификаторов групп 0-99. GID 100-102 отображаются в GUID 100. Несмотря на то что вы можете отобразить диапазон клиентских идентификаторов в единственный идентификатор на сервере, обратное действие не имеет смысла. При попытке пользователя с определенным UID на стороне клиента создать файл сервер не сможет выбрать локальный идентификатор.

Как и в случае, когда синхронизация идентификаторов на клиентской машине и сервере производится вручную, имена пользователей на клиентском компьютере и на сервере могут различаться. В файле соответствия содержится исключительно информация об идентификаторах пользователей и групп; сведения об именах отсутствуют. Несмотря на то что подобная ситуация не мешает нормальной работе, желательно согласовать пользовательские имена на клиентских компьютерах и на сервере.

Средства синхронизации идентификаторов пользователей, выполняемые на стороне клиента

Решить проблему синхронизации пользовательских идентификаторов можно, задавая на стороне сервера опцию map_daemon. Эта опция позволяет использовать на стороне клиента специальный демон, который называется ugidd или rpc.ugidd. Однако при работе с таким демоном могут возникать проблемы. Во-первых, программа ugidd поставляется не со всеми системами. Из дистрибутивных пакетов, которые обсуждались в данной книге, она входит только в состав Debian. Во-вторых, демон ugidd приходится устанавливать на всех клиентах, а это занимает много времени. В-третьих, чтобы программа не могла быть использована для несанкционированного доступа, необходимо запретить обращения к ней (это можно сделать, задавав требуемую конфигурацию в файле /etc/hosts.allow). И, наконец, что особенно важно, данная программа слишком сложна и в некоторых случаях она вовсе не работает либо отображает всех пользователей в пользователя nobody.

1.12 Резюме

NFS - чрезвычайно полезный инструмент, позволяющий обеспечить разделение файлов в системах UNIX и Linux. В отличие от Samba, NFS обеспечивает поддержку данных о владельцах файлов и правах доступа. Настройка NFS осуществляется несколько проще, чем конфигурирование средств Samba. С другой стороны, NFS использует принцип доверия, поэтому при работе с данной системой приходится предпринимать меры для синхронизации идентификаторов пользователей на клиентских машинах и серверах или хранить сведения о соответствии идентификаторов в специальном конфигурационном файле.

Размещено на Allbest.ru

...

Подобные документы

  • Появление операционной системы Windows 95. Правила присвоения имен файлам. Порядок хранения файлов на диске. Система хранения файлов и организации каталогов. Многоуровневая иерархическая файловая система. Полное имя файла. Иерархия папок Windows.

    презентация [103,0 K], добавлен 11.03.2015

  • Особенности работы "поисковика" дублирующихся файлов на диске. Выбор среды программирования. Разработка программного продукта. Основные требования, предъявляемые к программе, производящей поиск дублирующихся файлов на диске. Отображение скрытых файлов.

    курсовая работа [1,8 M], добавлен 28.03.2015

  • Общее понятие термина "файл". Имя файла и его расширение. Типы и параметры файлов, их значение. Понятие "файловая система" и "файловая структура диска". Построение дерева каталогов. Особенности имени файла в операционной системе MS-DOS и Windows.

    презентация [2,7 M], добавлен 18.10.2010

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

    реферат [102,2 K], добавлен 23.03.2010

  • Обзор особенностей работы с программой Total Commander. Создание папок, копирование файлов на флеш-карту. Вызов контекстного меню. Определение структуры файлов. Переименование группы файлов. Помещение файлов в архив. Разделение архива на несколько частей.

    лабораторная работа [1,9 M], добавлен 08.04.2014

  • Особенности и принцип действия файловой системы NTFS - одной из самых сложных и удачных из существующих на данный момент файловых систем. Функции файловой системы NTFS: разреженные файлы, журнал изменений, компрессия файлов и каталогов, жесткие связи.

    реферат [17,4 K], добавлен 24.12.2010

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

    презентация [85,4 K], добавлен 18.02.2010

  • Распространенные файловые системы. Обзор файловой системы FAT. Имена файлов в FAT. Файловая система FAT 32. Файловая система HPFS: суперблок, запасной блок, преимущества и недостатки. Файловая система NTFS. Устранение ограничения. Сравнение систем.

    реферат [31,5 K], добавлен 27.10.2007

  • Принципы создания последовательных и файлов произвольного доступа. Формирование файлов, в одном из которых помещены фамилии пяти знакомых, а в другой номера их телефонов. Составление программы, которая по фамилии знакомого определяет номер его телефона.

    контрольная работа [17,9 K], добавлен 25.12.2010

  • Файловая и сетевая системы операционной системы Windows. Характеристика модели "клиент-сервер". Функциональные требования и архитектура программы, которая должна обеспечивать передачу файлов от клиента к серверу, сервера к клиенту, обмен сообщениями.

    курсовая работа [1,4 M], добавлен 24.04.2013

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

    контрольная работа [101,7 K], добавлен 22.06.2014

  • Понятия файлов и каталогов. Область внешней памяти, группа файлов на одном носителе. Древовидная структура файлов на диске. Имя и местонахождение файла. Маршрут или путь по файловой системе. Запись имени файла в DOSе. Шаблоны. Структура каталога.

    лабораторная работа [15,2 K], добавлен 30.09.2008

  • Хранение файлов, доступ к ним, установка и изменение атрибутов. Операционные системы DOS, Windows 95/98/Me, Windows NT/2000/XP. Файловая система FAT 16. Уменьшение потерь дискового пространства. Количество секторов в кластере. Главная загрузочная запись.

    реферат [72,9 K], добавлен 19.01.2012

  • Особенности работы в среде оболочки NORTON COMMANDER. Взаимодействие с операционной системой. Формат показа оглавления каталога. Просмотр в панели дерева каталогов, информации о диске. Режим быстрого просмотра файлов. Управление отображением панелей.

    реферат [584,0 K], добавлен 17.05.2009

  • Понятие процесса архивации файлов. Программы, осуществляющие упаковку и распаковку файлов. Защита информации от несанкционированного доступа. Самораспаковывающиеся архивы. Основные характеристики программ-архиваторов. Распространенные алгоритмы сжатия.

    презентация [801,6 K], добавлен 23.10.2013

  • FAT - простая файловая система, разработанная для небольших дисков и простых структур каталогов. Структура папки FAT. Размеры кластеров по умолчанию для FAT16 и FAT32. Сравнение их характеристик. Обзор файловой системы FAT и ее основные преимущества.

    статья [24,2 K], добавлен 30.04.2010

  • Общая организация файловой системы. Виртуальные страницы. Команды для работы с ФС. Способы организации файлов. Системные вызовы управления процессами. Алгоритм работы планировщика процессов. Мультипрограммный режим работы ОС. Структура ядра системы.

    курсовая работа [645,3 K], добавлен 23.03.2015

  • Работа с файлами, каталогами и томами в Windows и Win32 API. Функции GetWindowsDirectory и GetSystemDirectory. Примеры работы с томами. Получение и изменение атрибутов файлов. Описание минимального набора базовых функций Windows. Чтение и запись файлов.

    лекция [62,7 K], добавлен 24.06.2009

  • Исследование проблемы сравнения звуковых файлов и определение степени их схожести. Сравнение файлов с использованием метода нечеткого поиска, основанного на метрике (расстоянии) Левенштейна. Сравнение MIDI-файлов и реализация алгоритмов считывания.

    курсовая работа [2,0 M], добавлен 14.07.2012

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

    курсовая работа [804,0 K], добавлен 08.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.