Etc exports nfs linux

Настройка NFS в Ubuntu

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

В этом материале мы рассмотрим, как провести настройку монтажа NFS на машине с Ubuntu 20.04.

Предварительные требования

В нашем примере используем пару серверов. С одного из них будем «транслировать» файловую систему на второй. Чтобы ускорить подготовку, арендуем пару виртуальных машин у провайдера Timeweb Cloud . Это позволит акцентировать внимание на функциях NFS.

  1. Предустановленная Ubuntu 20.04.
  2. Аккаунт без прав root и привилегиями sudo.
  3. Настроенный брандмауэр UFW.

В статье будем использовать название «хост» для сервера, предоставляющего доступ к файловой системе, а «клиент» для того, куда будут смонтированы «внешние папки». Сразу выясните IP-адреса обоих серверов, их на практике подставите вместо host_ip и client_ip, которые мы применим здесь в качестве примера.

Загрузим и инсталлируем компоненты

Процедуру проведем последовательно на каждом сервере, чтобы подготовить их к дальнейшей работе.

Хост

Инсталлируем пакет nfs-kernel-server , открывающий доступ к директориям, размещенным во «внутренней» файловой системе.

sudo apt update
sudo apt install nfs-kernel-server

По завершении инсталляции перейдем на клиентский сервер.

Клиент

На машину-клиент инсталлируем пакет nfs-common , организующий доступ к сторонним каталогам без дополнительных компонентов. Здесь также сначала обновим список пакетов для обеспечения актуальности всех установленных модулей:

sudo apt update
sudo apt install nfs-common

Теперь обе системы готовы к дальнейшей настройке.

Создадим на хосте общие каталоги

В качестве примера организуем доступ к паре папок, но зададим им разные настройки. Этим мы покажем разные варианты настройки монтажа NFS с использованием суперпользователя. Последние выполняют любые операции внутри системы, только вот смонтированные каталоги – это внешние ресурсы, которые «откажутся» работать без отдельного разрешения. Так, независимо от прав на машине суперпользователю не получится записать данные от имени root.

Читайте также:  Java jdk linux x64

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

Пример №1. Экспортируем ресурс общего назначения

Создадим «общий» ресурс с такими привилегиями, чтобы клиенту было сложно взаимодействовать с хостом при помощи прав суперпользователя. Такой подход актуален для совместной работы над проектами или хранения файлов, используемых в системе управления контентом.

Создадим общую папку для пользователя root с правами sudo:

sudo mkdir /var/nfs/general –p
ls -la /var/nfs/general

Результат видим на экране:

drwxr-xr-x 2 root root 4096 May 24 19:16

Система безопасности, заложенная в NFS на клиенте, преобразует команды, исходящие от root, в операции nobody:nogroup . Поэтому изменим владельца папки, чтобы соответствовать применяемым учетным данным:

sudo chown nobody:nogroup /var/nfs/general

Теперь система готовка к экспорту общего ресурса.

Пример №2

Рассмотрим второй пример, где сделаем домашние каталоги, расположенные на хосте и доступные с клиентских серверов, включая их администраторов. Экспортируем на хост каталог /home , с ним проще работать, потому что он уже существует и на нем настроены необходимые права. Методика та же, что и в предыдущем примере, только клиент и хост «меняются местами».

Настроим экспорт NFS на хосте

Теперь настроим общий доступ к экспортированным ресурсам через конфигурационный файл NFS, расположенный по пути /etc/exports . Откроем его текстовым редактором:

Синтаксис внутри него выглядит так:

directory_to_share client(share_option1. share_optionN)

Создадим строку для каждой папки, которую планируем использовать в общем доступе. Вместо client_ip подставьте свой реальный IP:

/var/nfs/general client_ip(rw,sync,no_subtree_check)
/home client_ip(rw,sync,no_root_squash,no_subtree_check)

Опции, используемые в настройках:

  • rw – открывает доступ на чтение-запись в указанном томе;
  • sync – включает принудительную запись изменений на диске;
  • no_subtree_check – отключает проверку вложенного дерева;
  • no_root_squash – активирует преобразование запросов root в запросы без привилегий.

Последнее необходимо для блокировки доступа суперпользователя к ресурсам сервера, кроме папки для общего доступа ( смонтированные каталоги NFS ). Отметим, что после внесения изменений в файл конфигурации необходимо сохранить их при закрытии. Следом обязательно перезагрузите сервер:

sudo systemctl restart nfs-kernel-server

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

Настроим брандмауэр на хосте

Перед внесением настроек проверим текущий статус:

Читайте также:  How to make partition linux

Это необходимо, чтобы убедиться в активности сервиса:

Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

В нашем примере разрешено подключение только по протоколу SSH, поэтому требуется вручную внести новое правило. Применим следующую команду, что открыть порт 2049:

sudo ufw allow from client_ip to any port nfs

Повторно проверим статус UFW:

Теперь мы видим разрешение для SSH и порта 2049:

Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
2049 ALLOW 203.0.113.24
OpenSSH (v6) ALLOW Anywhere (v6)

Создадим точки монтирования каталогов на клиенте

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

sudo mkdir -p /nfs/general
sudo mkdir -p /nfs/home

Смонтируем общие ресурсы при помощи IP хоста:

sudo mount host_ip:/var/nfs/general /nfs/general
sudo mount host_ip:/home /nfs/home

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

Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 936K 98M 1% /run
/dev/vda1 25G 1.8G 23G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000
10.132.212.247:/var/nfs/general 25G 1.8G 23G 8% /nfs/general
10.132.212.247:/home 25G 1.8G 23G 8% /nfs/home

Смонтированные ресурсы отображаются в самом низу. При помощи команды du посмотрим, какой объем занимает конкретная точка монтирования. К ней укажем прямой путь до каталога и опцию -s для отображения сводной информации, без детализации по каждому файлу. Если еще добавить опцию -h , то вывод будет представлен в более удобной для чтения форме:

Каталог home первоначально занимает всего 36 Кбайт.

Протестируем доступ NFS

Мы разобрались, как установить и настроить пакет NFS для общего доступа к ресурсам. Теперь же мы проведем тест их доступности для записи файлов.

Пример №1

Произведем запись тестового файла в каталог /var/nfs/general :

sudo touch /nfs/general/general.test
ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test

Мы ранее меняли владельца root на nobody:nogroup , он и отображается. Суперпользователи не могут пользоваться общим ресурсом как администраторы. Например, у них не получится создать новую папку для группы аккаунтов или изменить владельца файла.

Читайте также:  Linux mint pulseaudio install

Пример №2

Создадим по аналогичной схеме файл, но уже в общем каталоге /nfs/home :

sudo touch /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test

Мы здесь создали файл home.test с владельцем root по аналогии с ранее приведенным примером, где был создан general.test. Но в данном случае мы позволяем пользователям с доступом root на клиенте запускать операции без ограничений. Это удобно, т.к. не требуется отдельно открывать доступ root к системе хоста.

Монтируем удаленные каталоги NFS при запуске

Ресурсы, открытые для общего доступа, «отваливаются» после перезагрузки системы. Но ситуацию легко исправить – добавим команду в файл /etc/fstab , расположенный на клиенте. Сначала откроем редактор:

Перейдем в конец файла и внесем по строке на каждый из организованных ресурсов:

. . .
host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

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

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

Отключим расшаренный доступ

Как только общий каталог перестал быть востребованным его лучше отключить:

cd ~
sudo umount /nfs/home
sudo umount /nfs/general

Система удалит удаленные ресурсы и сохранит локальные хранилища.

Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 936K 98M 1% /run
/dev/vda1 25G 1.8G 23G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000

Чтобы запретить повторное подключение после запуска, требуется внести изменения в /etc/fstab (удалить ранее внесенные строки или закомментировать их символом # вначале каждой). Работать с вручную смонтированными ресурсами можно без ограничений.

Выводы

В этом материале мы разобрались, как установить сервер NFS на Ubuntu 20.04 , настроить его для расшаривания ресурсов или подключения к «внешним». Важно понимать, что протокол файловой системы не применяет шифрование, поэтому он не актуален для критических направлений вроде промышленных предприятий. Или одновременно организуют подключение по зашифрованному туннелю VPN.

Источник

Оцените статью
Adblock
detector