Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Администрирование систем Linux. Краткая информация о сетевой файловой системе

Оригинал: Introduction to nfs
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 2 апреля 2015 г.

Глава 26. Краткая информация о сетевой файловой системе

Сетевая файловая система (Network File System или NFS) с восьмидесятых годов прошлого века позволяет предоставлять доступ к директориям локальной файловой системы другим компьютерам из сети.

В данной главе будут рассматриваться вопросы настройки сервера и клиента NFS.

26.1. Версии протокола NFS

Устаревшие версии протокола NFS 2 и 3 по умолчанию не сохраняют состояния (используют протокол UDP, хотя и могут работать по протоколу TCP). Более новая версия протокола NFS 4 поддерживает возможность сохранения состояния, имеет лучшую производительность и более надежную защиту.

Версия 4 протокола NFS была описана в стандартах RFC 3010 в 2000 году и RFC 3530 в 2003 году, а также требует использования протокола TCP (на порту 2049). Кроме того, она поддерживает механизм аутентификации пользователей Kerberos в качестве варианта системы контроля доступа к монтируемой файловой системе. Аутентификация в версиях протокола NFS 2 и 3 происходила исключительно на уровне узлов.

26.2. Утилита rpcinfo

Клиенты соединяются с сервером с помощью технологии удаленного вызова процедур (в Linux для этих целей задействован демон portmap). Рассмотрите вывод утилиты rpcinfo, чтобы убедиться в том, что обработчики запросов NFS и соответствующие службы исполняются.

root@RHELv4u2:~# /etc/init.d/portmap status
portmap (pid 1920) is running...
root@RHELv4u2:~# rpcinfo -p
program vers proto   port
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  32768  status
100024    1   tcp  32769  status
root@RHELv4u2:~# service nfs start
Starting NFS services:                                      [ OK ]
Starting NFS quotas:                                        [ OK ]
Starting NFS daemon:                                        [ OK ]
Starting NFS mountd:                                        [ OK ]

Вывод той же утилиты rpcinfo после запуска служб, ответственных за работу с сетевой файловой системой.

root@RHELv4u2:~# rpcinfo -p
program vers proto   port
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  32768  status
100024    1   tcp  32769  status
100011    1   udp    985  rquotad
100011    2   udp    985  rquotad
100011    1   tcp    988  rquotad
100011    2   tcp    988  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   udp  32770  nlockmgr
100021    3   udp  32770  nlockmgr
100021    4   udp  32770  nlockmgr
100021    1   tcp  32789  nlockmgr
100021    3   tcp  32789  nlockmgr
100021    4   tcp  32789  nlockmgr
100005    1   udp   1004  mountd
100005    1   tcp   1007  mountd
100005    2   udp   1004  mountd
100005    2   tcp   1007  mountd
100005    3   udp   1004  mountd
100005    3   tcp   1007  mountd

26.3. Настройка сервера

Сервер NFS настраивается с помощью файла конфигурации /etc/exports. Также вам может понадобиться какой-либо механизм синхронизации идентификаторов пользователей между компьютерами в случае масштабного использования сетевой файловой системы (возможно, таким механизмом является LDAP).

Параметр rootsquash позволяет заменять идентификатор пользователя root (0) на идентификатор пользователя nobody (или аналогичного пользователя). Параметр sync позволяет активировать механизм принудительной записи данных на диск перед завершением выполнения запроса от клиента.

26.4. Файл конфигурации /etc/exports

Ниже приведен пример файла конфигурации /etc/exports с пояснениями относительно синтаксиса.

paul@laika:~$ cat /etc/exports 
# Everyone can read this share 
# (Каждый пользователь имеет возможность чтения данных из файлов экспортируемой файловой системы)
/mnt/data/iso *(ro)

# Only the computers named pasha and barry can readwrite this one 
# (Читать и записывать данные в файлы экспортируемой файловой системы могут исключительно пользователи компьютеров pasha и barry)
/var/www pasha(rw) barry(rw)

# same, but without root squashing for barry
# (Аналогично, но пользователю root компьютера barry разрешается работать с файловой системой без изменения идентификатора пользователя)
/var/ftp pasha(rw) barry(rw,no_root_squash)

# everyone from the netsec.local domain gets access
# (Каждый пользователь узла с доменом netsec.local получает полный доступ к файловой системе)
/var/backup *.netsec.local(rw)

# ro for one network, rw for the other
# (Для пользователей из одной сети разрешено только чтение из файловой системы, из другой - чтение и запись в файловую систему)
/var/upload 192.168.1.0/24(ro) 192.168.5.0/24(rw)

Более новые версии протокола NFS требуют явной активации механизма проверки принадлежности запрошенных файлов к экспортируемым поддиректориям файловых систем с помощью параметра subtree_check (или его явной деактивации с помощью параметра no_subtree_check). В этом случае файл конфигурации /etc/exports будет выглядеть аналогичным образом:

root@debian6 ~# cat /etc/exports
# Everyone can read this share
# (Каждый пользователь имеет возможность чтения данных из файлов экспортируемой файловой системы)
/srv/iso *(ro,no_subtree_check)

# Only the computers named pasha and barry can readwrite this one
# (Читать и записывать данные в файлы экспортируемой файловой системы и могут исключительно пользователи компьютеров pasha и barry) 
/var/www pasha(rw,no_subtree_check) barry(rw,no_subtree_check)

# same, but without root squashing for barry
# (Аналогично, но пользователю root компьютера barry разрешается работать с файловой системой без изменения идентификатора пользователя)
/var/ftp pasha(rw,no_subtree_check) barry(rw,no_root_squash,no_subtree_check)

26.5. Утилита exportfs

Вам не придется перезапускать сервер NFS для экспорта файловых систем, соответствующих добавленным в файл конфигурации описаниям. Для этой цели вы можете просто воспользоваться командой exportfs -va. Она позволяет дописать пути директориям в файл /var/lib/nfs/etab, после чего они будут немедленно экспортированы.

root@debian6 ~# exportfs -va
exporting pasha:/var/ftp
exporting barry:/var/ftp
exporting pasha:/var/www
exporting barry:/var/www
exporting *:/srv/iso

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

Ранее мы рассматривали утилиту mount и файл /etc/fstab.

root@RHELv4u2:~# mount -t nfs barry:/mnt/data/iso /home/project55/
root@RHELv4u2:~# cat /etc/fstab | grep nfs
barry:/mnt/data/iso   /home/iso               nfs     defaults    0 0
root@RHELv4u2:~#

Ниже приведен другой простой пример. Представьте, что разработчики проекта project55 сообщили вам о том, что им требуется несколько файлов образов дисков CD-ROM, причем эти файлы уже размещены вами в директории, экспортируемой средствами сервера NFS. Вы должны выполнить следующую команду для монтирования этой экспортируемой директории в точку монтирования /home/project55.

root@RHELv4u2:~# mount -t nfs 192.168.1.40:/mnt/data/iso /home/project55/
root@RHELv4u2:~# ls -lh /home/project55/
итого 3.6G
drwxr-xr-x 2 1000 1000 4.0K янв 16 17:55 RHELv4u1
drwxr-xr-x 2 1000 1000 4.0K янв 16 14:14 RHELv4u2
drwxr-xr-x 2 1000 1000 4.0K янв 16 14:54 RHELv4u3
drwxr-xr-x 2 1000 1000 4.0K янв 16 11:09 RHELv4u4
-rw-r--r-- 1 root root 1.6G окт 13 15:22 sled10-vmwarews5-vm.zip
root@RHELv4u2:~# 

26.7. Практическое задание: краткая информация о сетевой файловой системе

1. Создайте две директории с какими-либо файлами. Используйте сервер NFS для экспорта первой директории в режиме только для чтения, а второй - в режиме для чтения и записи. Ваш сосед должен смонтировать данные директории и проверить корректность расстановки прав доступа.

2. Выясните имя пользователя, владеющего файлами, которые создал ваш сосед в экспортируемой файловой системе.

3. Ограничьте доступ к экспортируемой директории, указав IP-адрес или имя узла компьютера вашего соседа.


Предыдущий раздел: Оглавление Следующий раздел:
Глава 25. Клиент и сервер ssh   Глава 27. Краткая информация о сетевых службах