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

    Команда Simple-Server
    03.06.2026
    11 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

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

    В нашем примере используем пару серверов. С одного из них будем «транслировать» файловую систему на второй. Чтобы ускорить подготовку, арендуем пару виртуальных машин у провайдера Simple-Server. Это позволит акцентировать внимание на**** функциях 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.

    Также недоступно переназначение владельца, иные подобные задачи на смонтированном томе 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

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

    Рассмотрим второй пример, где сделаем домашние каталоги, расположенные на хосте и доступные с клиентских серверов, включая их администраторов. Экспортируем на хост каталог /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

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

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

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

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

    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 для общего доступа к ресурсам. Теперь же мы проведем тест их доступности для записи файлов.

    Произведем запись тестового файла в каталог /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, он и отображается. Суперпользователи не могут пользоваться общим ресурсом как администраторы. Например, у них не получится создать новую папку для группы аккаунтов или изменить владельца файла.

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

    sudo touch /nfs/home/home.test ls -l /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 (удалить ранее внесенные строки или закомментировать их символом # вначале каждой). Работать с вручную смонтированными ресурсами можно без ограничений.


    Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны