Библиотека сайта 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. Краткая информация о сетевых службах |