Linux

Как установить и настроить сервер NFS в Ubuntu 20.04

Как установить и настроить сервер NFS в Ubuntu 20.04

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

По умолчанию протокол NFS не зашифрован и не обеспечивает аутентификацию пользователя. Доступ к серверу ограничен IP-адресами или именами хостов клиента.

В этой статье объясняется, как настроить сервер NFSv4 в Ubuntu 20.04. Мы также покажем вам, как смонтировать файловую систему NFS на клиентском компьютере.

Предпосылки #

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

Машины в этом примере имеют следующие IP-адреса:

IP-адрес сервера NFS: 192.168.33.10 IP-адресов клиентов NFS: из 192.168.33.0/24 диапазон 

Настроить сервер NFS #

Первый шаг - настроить сервер NFS. Установим необходимые пакеты, создадим и экспортируем каталоги NFS и настроим брандмауэр.

Установка сервера NFS #

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

sudo apt updatesudo apt установить nfs-kernel-server

После завершения установки службы NFS запустятся автоматически.

В Ubuntu 20.04, NFS версии 2 отключен. Версии 3 и 4 включены. Вы можете убедиться в этом, выполнив следующие Кот команда:

sudo cat / proc / fs / nfsd / версии
-2 +3 +4 +4.1 +4.2 

NFSv2 сейчас довольно старый, и нет причин включать его.

Конфигурация сервера NFS определена в / и т.д. / по умолчанию / nfs-ядро-сервер а также / и т.д. / по умолчанию / nfs-common файлы. Настройки по умолчанию подходят для большинства ситуаций.

Создание файловых систем #

Сервер NFSv4 использует глобальный корневой каталог, и экспортируемые каталоги относятся к этому каталогу. Вы можете связать точку монтирования общего ресурса с каталогами, которые хотите экспортировать, используя привязку монтирования.

В этом примере мы установим / srv / nfs4 каталог как корень NFS. Чтобы лучше объяснить, как можно настроить монтирование NFS, мы собираемся поделиться двумя каталогами (/ var / www а также / opt / резервные копии) с разными настройками конфигурации. В / var / www / принадлежит пользователю www-data, а также / opt / резервные копии принадлежит корень.

Сначала создайте корневой каталог и точки монтирования общего ресурса:

sudo mkdir -p / srv / nfs4 / резервные копиисудо mkdir -p / srv / nfs4 / www

Привязать монтирование каталогов к точкам монтирования общего ресурса:

sudo mount --bind / opt / backups / srv / nfs4 / резервные копииsudo mount --bind / var / www / srv / nfs4 / www

Чтобы закрепить привязку при перезагрузке, откройте / etc / fstab файл:

судо нано / и т. д. / fstab

и добавьте следующие строки:

/ etc / fstab
/ opt / backups / srv / nfs4 / backups none bind 0 0 / var / www / srv / nfs4 / www none bind 0 0 

Экспорт файловых систем #

Следующим шагом является добавление файловых систем, которые будут экспортированы, и клиентам, которым разрешен доступ к этим общим ресурсам, в / и т. д. / экспорт файл.

Каждая строка для экспортированной файловой системы имеет следующий вид:

хост экспорта (опции) 

Где экспорт это экспортированный каталог, хозяин это имя хоста или IP-адрес / диапазон, которые могут получить доступ к экспорту, и параметры варианты хоста.

Открой / и т. д. / экспорт файл и добавьте следующие строки:

судо нано / и т. д. / экспорт
/ и т. д. / экспорт
/ SRV / NFS4 192.168.33.0/24 (rw, sync, no_subtree_check, crossmnt, fsid = 0) / srv / nfs4 / backups 192.168.33.0/24 (ro, синхронизация, no_subtree_check) 192.168.33.3 (rw, синхронизация, no_subtree_check) / srv / nfs4 / www 192.168.33.20 (rw, синхронизация, no_subtree_check) 

Первая строка содержит fsid = 0 параметр, определяющий корневой каталог NFS (/ srv / nfs4). Доступ к этому тому NFS разрешен только клиентам из 192.168.33.0/24 подсеть. В пересечение опция требуется для совместного использования каталогов, которые являются подкаталогами экспортированного каталога.

Вторая строка показывает, как указать несколько правил экспорта для одной файловой системы. Доступ для чтения разрешен для всего 192.168.33.0/24 диапазон, и доступ для чтения и записи только к 192.168.33.3 айпи адрес. В синхронизировать опция указывает NFS записывать изменения на диск перед ответом.

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

Сохраните файл и экспортируйте акции:

sudo exportfs -ar

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

Чтобы просмотреть текущий активный экспорт и его состояние, используйте:

sudo exportfs -v

Вывод будет включать все акции с их опционами. Как видите, есть также параметры, которые мы не определили в / и т. д. / экспорт файл. Это параметры по умолчанию, и если вы хотите их изменить, вам необходимо явно установить эти параметры.

/ SRV / NFS4 / резервные копии 192.168.33.3 (rw, wdelay, root_squash, no_subtree_check, sec = sys, rw, secure, root_squash, no_all_squash) / srv / nfs4 / www 192.168.33.20 (rw, wdelay, root_squash, no_subtree_check, sec = sys, rw, secure, root_squash, no_all_squash) / srv / nfs4 192.168.33.0/24 (rw, wdelay, crossmnt, root_squash, no_subtree_check, fsid = 0, sec = sys, rw, secure, root_squash, no_all_squash) / srv / nfs4 / backups 192.168.33.0/24 (ro, wdelay, root_squash, no_subtree_check, sec = sys, ro, secure, root_squash, no_all_squash) 

На Ubuntu, root_squash включен по умолчанию. Это один из наиболее важных параметров безопасности NFS. Он запрещает пользователям root, подключенным с клиентов, иметь привилегии root на подключенных общих ресурсах путем сопоставления root UID а также GID к никто/группа UID/GID.

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

это оно. На этом этапе вы настроили сервер NFS на своем сервере Ubuntu. Теперь вы можете перейти к следующему шагу и настроить клиентов и подключиться к серверу NFS.

Конфигурация межсетевого экрана #

Если вы устанавливаете Jenkins на удаленный сервер Ubuntu, защищенный брандмауэром, вам необходимо включить трафик на порт NFS:

sudo ufw разрешить от 192.168.33.0/24 на любой порт nfs

Проверьте изменение:

sudo ufw статус

Вывод должен показать, что трафик на порту 2049 г разрешено:

К действию с - ------ ---- 2049 РАЗРЕШИТЬ 192.168.33.0/24 22 / tcp РАЗРЕШИТЬ где угодно 22 / tcp (v6) РАЗРЕШИТЬ где угодно (v6) 

Настройка клиентов NFS #

Теперь, когда сервер NFS настроен и общие ресурсы экспортированы, следующим шагом будет настройка клиентов и монтирование удаленных файловых систем.

Мы сосредоточимся на системах Linux, но вы также можете смонтировать общий ресурс NFS на компьютерах с macOS и Windows.

Установка клиента NFS #

На клиентских машинах нам нужно установить только инструменты, необходимые для монтирования удаленной файловой системы NFS.

Монтирование файловых систем #

Будем работать на клиентской машине с IP 192.168.33.20, который имеет доступ для чтения и записи к / SRV / NFS4 / www файловая система и доступ только для чтения к / SRV / NFS4 / резервные копии файловая система.

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

sudo mkdir -p / резервные копиисудо mkdir -p / SRV / www

Вы можете создавать каталоги в любом месте, где захотите.

Смонтируйте экспортированные файловые системы с помощью устанавливать команда:

sudo mount -t nfs -o vers = 4 192.168.33.10: / резервные копии / резервные копииsudo mount -t nfs -o vers = 4 192.168.33.10: / www / SRV / www

Где 192.168.33.10 это IP-адрес сервера NFS. Вы также можете использовать имя хоста вместо IP-адреса, но оно должно быть разрешено клиентской машиной. Обычно это делается путем сопоставления имени хоста с IP-адресом в / etc / hosts файл.

При монтировании файловой системы NFSv4 опускайте корневой каталог NFS. Использовать / резервные копии, вместо / SRV / NFS4 / резервные копии.

Убедитесь, что удаленные файловые системы успешно смонтированы с помощью монтирования или df команда:

df -h

Команда распечатает все смонтированные файловые системы. Последние две строки - это смонтированные акции:

Используемый размер файловой системы Доступность Использование% Установлено на udev 951M 0 951M 0% / dev tmpfs 199M 676K 199M 1% / run / dev / sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% / dev / shm tmpfs 5.0M 0 5.0M 0% / run / lock tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / run / user / 1000192.168.33.10: / резервное копирование 124 Гб 2.8G 115G 3% / резервное копирование 192.168.33.10: / www 124G 2.8G 115G 3% / срв / www

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

судо нано / и т. д. / fstab
/ etc / fstab
192.168.33.10: / backups / backups значения по умолчанию nfs, timeo = 900, retrans = 5, _netdev 0 0 192.168.33.10: / www / srv / www nfs по умолчанию, timeo = 900, retrans = 5, _netdev 0 0 

Для получения информации о доступных параметрах монтирования файловой системы NFS введите человек нфс в вашем терминале.

Другой вариант монтирования удаленных файловых систем - использовать либо autofs инструмент или создать модуль systemd.

Тестирование доступа NFS #

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

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

sudo touch / резервные копии / тест.текст

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

touch: не могу коснуться '/ backups / test': в доступе отказано 

Далее попробуйте создать тестовый файл в / SRV / www каталог в качестве корня, используя судо команда:

sudo touch / srv / www / test.текст

Вы снова увидите В доступе отказано сообщение.

touch: нельзя касаться '/ srv / www': в разрешении отказано 

Если вы помните, / var / www каталог принадлежит www-data пользователь, и этот общий ресурс имеет root_squash набор опций, который сопоставляет пользователя root с никто пользователь и группа группа, у которой нет прав на запись в удаленный общий ресурс.

Предполагая, что у вас есть www-data использовать на клиентской машине с тем же UID а также GID как и на удаленном сервере (что должно быть, если, например, вы установили nginx на обеих машинах), вы можете попробовать создать файл как пользователь www-data:

sudo -u www-data touch / srv / www / test.текст

Команда не покажет никаких выходных данных, что означает, что файл был успешно создан.

Чтобы проверить это, перечислите файлы в / SRV / www каталог:

ls -la / SRV / www

На выходе должен отобразиться только что созданный файл:

drwxr-xr-x 3 www-data www-data 4096 10 апр 22:18 . drwxr-xr-x 3 root root 4096 10 апр 22:29… -rw-r - r-- 1 www-data www-data 0 10 апр 21:58 index.html -rw-r - r-- 1 www-data www-data 0 10 апреля 22:18 test.текст 

Размонтирование файловой системы NFS #

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

Например, чтобы размонтировать /резервное копирование поделитесь, вы бы запустили:

sudo umount / резервные копии

Если точка монтирования определена в / etc / fstab файл, убедитесь, что вы удалили строку или закомментировали ее, добавив # в начале строки.

Заключение #

Мы показали вам, как настроить сервер NFS и как смонтировать удаленные файловые системы на клиентских машинах. Если вы внедряете NFS в производство и обмениваетесь разумными данными, рекомендуется включить аутентификацию Kerberos.

В качестве альтернативы NFS вы можете использовать SSHFS для монтирования удаленных каталогов через SSH-соединение. SSHFS по умолчанию зашифрован, и его гораздо проще настроить и использовать.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Эмуляция щелчков мыши с помощью мыши без щелчка в Windows 10
Использование мыши или клавиатуры в неправильной позе или чрезмерное использование может привести к множеству проблем со здоровьем, включая растяжение...
Добавьте жесты мыши в Windows 10 с помощью этих бесплатных инструментов
В последние годы компьютеры и операционные системы сильно эволюционировали. Было время, когда пользователям приходилось использовать команды для навиг...
Контроль и управление перемещением мыши между несколькими мониторами в Windows 10
Диспетчер мыши с двумя дисплеями позволяет контролировать и настраивать движение мыши между несколькими мониторами, замедляя ее движения возле границы...