Разделение ресурсов: NFS и SAMBA
12.1. NFS — сетевая файловая система
Сетевая файловая система (Network File Sharing) — это протокол, позволяющий монтировать файловые системы на удаленных компьютерах. При этом создается ощущение, что эти файловые системы располагаются локально, если не считать, конечно, скорости соединения. Сетевая файловая система чем-то напоминает службу «Доступ к файлам и принтерам» сети Microsoft.
Служба NFS основана на RPC (Remote Procedure Call): клиент вызывает функции в программе сервера. Клиентскому компьютеру не требуется дополнительного программного обеспечения, чтобы воспользоваться NFS: ядро Linux само определяет, что запрошенный файл находится на NFS-сервере, и автоматически генерирует RPC-вызов, чтобы получить доступ к файлу.
Версия 2 протокола NFS появилась в ядре 1.2. Начиная с версии ядра 2.2.18, поддерживается версия 3, в которой улучшена производительность благодаря безопасной асинхронной записи файлов, добавлены поддержка файлов размером больше 2 Гб и средства блокировки файлов. В ядра 2.4 и выше встроена полнофункциональная NFSv3, работающая поверх протокола TCP (в дополнение к обычному UDP), и большинство популярных дистрибутивов ее поддерживают. Четвертая версия NFS с повышенной безопасностью появилась в Red Hat Enterprise Linux 4.
FAQ и HOWTO-документы можно найти на домашней странице проекта
nfs.sourceforge.net
.12.1.1. Клиент NFS: монтирование сетевого каталога
Монтирование осуществляется с помощью команды mount:
# mount -t nfs -о timeo=30 nfsserver.domain.com:
/home/den /home/den/remote/
Прежде всего, нужно указать тип файловой системы:
-t nfs
. Параметр timeo задает время ожидания, равное 3 секундам. Интересующая нас файловая система находится на компьютере nfsserver.domain.com
и смонтирована там как /home/den
. Мы же подмонтируем ее в подкаталог домашнего каталога на локальном компьютере /home/den/remote/
.Для монтирования сетевых файловых систем предназначены ключи команды mount, перечисленные в таблице 12.1.
Ключи команды mount для сетевых файловых систем Таблица 12.1
Ключ Назначение bg Если первая попытка монтирования файловой системы NFS окажется неудачной. то попытки будут автоматически повторяться в фоновом режиме fg Если первая попытка монтирования файловой системы NFS окажется неудачной. то попытки будут автоматически повторяться в приоритетном режиме. Это значение установлено по умолчанию soft Задержка при выполнении операции, связанной с файлом, расположенным в сетевой файловой системе NFS (возникающая при сбое сервера или отключении сети), будет приводить к отправке приложению сообщения об ошибке ввода/вывода. И хотя некоторые приложения могут корректно обрабатывать такую ошибку, но большинство из них все-таки такой возможностью не обладают. Не рекомендуется устанавливать это значение, так как оно может привести к появлению испорченных файлов и потере данных hard Задержка при выполнении операции, связанной с файлом, расположенным в сетевой файловой системе NFS, будет приводить к приостановке, а затем возобновлению процесса с прерванного места. Таким образом будут предприниматься повторные попытки выполнения операции. Значение hard установлено по умолчанию tcp Монтирует сетевую файловую систему с помощью протокола TCP, а не UDP rsize=1024 Задает размер информации, пересылаемый при чтении файлов за один раз. По умолчанию этот размер равен 1024 байта. Однако зачастую имеет смысл увеличить это значение (например, до 4096) wsize=1024 Аналогично rsize, но для операции записи noexec Запрещает выполнение программ или сценариев в монтируемой файловой системе. При этом клиентом будет игнорироваться атрибут «исполнение»
Чтобы сетевая файловая система монтировалась автоматически при загрузке системы, нужно внести определенные записи в файл
/etc/fstab
. Например, такая запись для рассмотренного выше примера может иметь примерно следующий вид:nfsserver.domain.com:/home/den /home/den/remote/ nfs bg,hard,rw 1 0
12.1.2. Настройка сервера NFS
Сервер NFS экспортирует файловые системы, то есть делает их доступными для использования с другого компьютера. Обслуживанием экспорта занимаются следующие демоны:
♦rpc.mountd, обрабатывающий запрос на монтирование;
♦rpc.nfsd, обеспечивающий доступ к файлам смонтированной файловой системы;
♦rpc.lockd и rpc.statd, управляющие блокировкой файлов;
♦rpc.rquotad, контролирующий квоты на экспортируемых файловых системах.
Эти демоны устанавливаются из пакета
nfs-utils
в каталог /sbin
(реже /usr/sbin
). Запускаются они в ходе начальной загрузки, и сценарии запуска находятся в том же пакете.Как и другие RPC-службы, NFS зависит от демона portmap (или rpc.portmap), который должен запускаться первым. Загрузочные сценарии большинства современных дистрибутивов включают запуск этого демона. Если в вашем дистрибутиве демоны NFS по умолчанию не запускаются, отредактируйте загрузочные сценарии, организовав запуск в следующем порядке:
♦ rpc.portmap;
♦ rpc.mountd, rpc.nfsd;
♦ rpc.statd, rpc.lockd (с ядром выше 2.2.18 этот демон вызывается из nfsd, и отдельно запускать его не нужно), rpc.rquotad.
Если на вашем компьютере запущен также сервер DNS, проследите за тем, чтобы сервер DNS запускался после демонов NFS. При соблюдении данного условия гарантируется корректная работа NFS.
Конфигурационным файлом сервера NFS служит
/etc/exports
, содержащий список экспортируемых файловых систем. В каждой строке записан один экспортируемый каталог, узел или домен, которому разрешено монтировать этот каталог, и — без пробела, в скобках, через запятую, — спецификации экспорта. Длинные строки можно разбивать на несколько строк при помощи символа обратного слэша.Разрешается экспортировать любые каталоги, а не только корневые каталоги физических файловых систем. Единственное ограничение — файловые системы, физически расположенные на разных устройствах (разделах), должны экспортироваться по отдельности.
Листинг 12.1. Примерный файл /etc/exports
/pub (ro,insecure,all_squash)
/home/den denhome.domain.com(rw)
/mnt/cdrom (ro)
/mnt/cdrom comp11.domain.com(noaccess)
Давайте разберемся в данной конфигурации. К каталогу
/pub
имеют доступ в режиме «только чтение» все компьютеры сети. К каталогу /home/den
доступ в режиме чтения и записи имеется только с компьютера denhome.domain.com. К каталогу /mnt/cdrom
доступ в режиме «только чтение» имеют все компьютеры, кроме comp11.domain.com.Другие спецификации экспорта перечислены в таблице 12.2.
Спецификации в файле
/etc/ехports
Таблица 12.2Спецификация Назначение secure Требует, чтобы запросы исходили только из портов безопасного диапазона — с номерами, меньшими 1024. В Linux доступ к таким портам имеет только пользователь root. Значение secure по умолчанию включено insecure Отключает значение secure ro Устанавливает для экспортируемого каталога доступ в режиме «только чтение» rw Устанавливает для экспортируемого каталога доступ в режиме чтения и записи noaccess Запрещает доступ к конкретной ветви (подкаталогу) экспортируемого дерева каталогов link_absolute Оставляет все символические ссылки без изменений. Значение включено по умолчанию link_relative Конвертирует абсолютные ссылки в относительные squash_uidssquash_gids Указанные идентификаторы групп и пользователей будут конвертированы в анонимные all_squash Все идентификаторы групп и пользователей будут конвертированы в анонимные. При этом всем им будет запрещен доступ к экспортируемым каталогам. По умолчанию так не делается no_all_squash Значение, обратное all_squash. Активизировано по умолчанию root_squash Преобразует запросы от пользователя root (uid=0) в запросы от анонимного пользователя с целью запретить суперпользователю его привилегии при доступе к файловой системе. Это значение установлено по умолчанию no_root_squash Отменяет значение root_squash anonuid=UID anonguid=GID Задают идентификаторы анонимных пользователей. По умолчанию анонимным пользователем является пользователь nobody. Однако с помощью этих спецификаций вы можете сами указать, кого следует воспринимать в качестве анонимных пользователей
Каталоги, перечисленные в
/etc/exports
, экспортируются на этапе начальной загрузки. Добавить или удалить каталог в течение сеанса можно при помощи утилиты exportfs из пакета nfs-utils.Для повышения безопасности доступа к разделяемым ресурсам служат конфигурационные файлы
/etc/hosts.allow
и /etc/hosts.deny
(п.11.2.2).12.2. Samba: Linux-сервер для Windows-клиентов