Главная >> Сервер >> Настройка NFS в Ubuntu

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

Сетевая файловая система NFS или Network File System, это популярный протокол сетевой файловой системы, который позволяет пользователям подключать удаленные сетевые каталоги на своей машине и передавать файлы между серверами. Вы можете использовать дисковое пространство на другой машине для своих файлов и работать с файлами, расположенными на других серверах. По сути, это альтернатива общего доступа Windows для Linux, в отличие от Samba реализована на уровне ядра и работает более стабильно.

В этой статье будет рассмотрена установка NFS в Ubuntu. Мы разберем установку всех необходимых компонентов, настройку общей папки, а также подключение сетевых папок.

Немного теории

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

Установка компонентов NFS

Перед тем как мы сможем работать с NFS, нам придется установить несколько программ. На машину, которая будет сервером нужно установить пакет nfs-kernel-server, с помощью которого будет выполнено открытие шары nfs в ubuntu 16.04. Для этого выполните:

sudo apt install nfs-kernel-server

Теперь давайте проверим правильно ли установился сервер. Сервис NFS слушает соединения как для TCP, так и для UDP на порту 2049. Посмотреть действительно ли сейчас используются эти порты можно командой:

rpcinfo -p | grep nfs

nfs

Также важно проверить поддерживается ли NFS на уровне ядра:

cat /proc/filesystems | grep nfs

nfs1

Видим, что работает, но если нет, нужно вручную загрузить модуль ядра nfs:

modprobe nfs

Давайте еще добавим NFS в автозагрузку:

sudo systemctl enable nfs-server

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

sudo apt install nfs-common

Вот и все, дальше настройка NFS в Ubuntu.

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

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

sudo mkdir /var/nfs

Дальше нас интересует настройка ubuntu nfs server. Все общие папки и другие настройки nfs находятся в файле /etc/exports. Синтаксис записи папки такой:

адрес_папки клиент(опции)

Адрес папки - это та папка, которую нужно сделать доступной по сети. Клиент - ip адрес или адрес сети, из которой могут получить доступ к этой папке. А вот с опциями немного сложнее. Рассмотрим некоторые из них:

  • rw - разрешить чтение и запись в этой папке;
  • ro - разрешить только чтение;
  • sync - отвечать на следующие запросы только тогда, когда данные будут сохранены на диск (по умолчанию);
  • async - не блокировать подключения пока данные записываются на диск;
  • secure - использовать для соединения только порты ниже 1024;
  • insecure - использовать любые порты;
  • nohide - не скрывать поддиректории при, открытии доступа к нескольким директориям;
  • root_squash - подменять запросы от root на анонимные, используется по умолчанию;
  • no_root_squash - не подменять запросы от root на анонимные;
  • all_squash - превращать все запросы в анонимные;
  • subtree_check - проверять не пытается ли пользователь выйти за пределы экспортированной папки;
  • no_subtree_check - отключить проверку обращения к экспортированной папке, улучшает производительность, но снижает безопасность, можно использовать когда экспортируется раздел диска;
  • anonuid и anongid - указывает uid и gid для анонимного пользователя.

Например, для нашей папки, если вы хотите разрешить к ней подключаться только с определённого IP адреса, эта строка может выглядеть вот так:

sudo vi /etc/exports

/var/nfs 127.0.0.1(rw,sync,no_subtree_check)

Можно разрешить только нужную подсеть, например:

/var/nfs 192.168.0.0/24(rw,sync,no_subtree_check)

Для того чтобы разрешить все адреса используйте подсеть 0.0.0.0/0 или символ *.

Открытие шары NFS в Ubuntu почти завершено. Осталось разобраться с правами. Кроме ограничений IP адреса работает обычная система полномочий UNIX, поэтому если вы хотите чтобы определённый пользователь мог получить доступ к папке, то на сервере должен существовать пользователь с таким же UID и эта папка должна принадлежать ему или группе в которой он состоит.

Кроме того, обратите внимание на то, что все подключения от имени пользователя root считаются по умолчанию анонимными (nfsnobody), чтобы это отключить добавьте опцию монтирования no_root_squash, но это не безопасно, потому что любой root пользователь сможет получить доступ на запись ко всем файлам. Теперь попытаемся настроем клиента и попытаемся ее примонтировать.

Для того чтобы все пользователи могли получить доступ ко всем файлам можно создать пользователя с UID 1001 и попросить NFS все запросы считать запросами от анонимного пользователя, а анонимному пользователю присвоить UID 1001. Это делается такими опциями:

/var/nfs 127.0.0.1(rw,sync,all_squash,root_squash,anonuid=1001,anongid=1001)

Когда все будет настроено, останется только обновить таблицу экспорта NFS:

sudo exportfs -a

Если на вашем сервере используется брандмауэр, то следует открыть порты 111 и 2049:

sudo ufw allow 111
sudo ufw allow 2049

Подключение NFS

Мы не будем подробно останавливаться на этом вопросе в сегодняшней статье. Это довольно большая тема, заслуживающая отдельной статьи. Но пару слов я все же скажу. Чтобы подключить сетевую папку вам не нужен никакой nfs клиент ubuntu, достаточно использовать команду mount:

 sudo mount 127.0.0.1:/var/nfs/ /mnt/

Теперь вы можете попытаться создать файл в подключенной директории:

touch /mnt/test

Также мы посмотрите подключенные файловые системы с помощью df:

df -h

127.0.0.1:/var/nfs 30G 6,7G 22G 24% /mnt

Чтобы отключить эту файловую систему достаточно использовать стандартный umount:

sudo umount /mnt/

Выводы

В этой статье была рассмотрена настройка NFS в Ubuntu 20.04, как видите, все делается очень просто и прозрачно. Подключение NFS шары выполняется в несколько кликов, с помощью стандартных команд, а открытие шары NFS ненамного сложнее подключения. Если у вас остались вопросы, пишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

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

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (19 оценок, среднее: 4,11 из 5)
Загрузка...
Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

10 комментариев к “Настройка NFS в Ubuntu”

  1. Настроил монтирование nfs, добавил в fstab, однако при первом обращении к папке после загрузки клиента она пустая и файлы появляется там только после клика по примонтированной папке, а там запрашивается пароль (в kde). Можно как-то исправить ситуацию?

    Ответить
  2. Купил ноутбук HONOR magicbook на deepin и знаете что!? Я был поражен тем что они не удосужились установить на него все что необходимо для полного взаимодействия их девайсов с их буком именно на deepin так как эта ОС у них стоит установленной... Да и вообще у них все девайсы на linux могли бы поднопрячься.

    Ответить
  3. Здравствуйте! Подскажите пожалуйста, если у меня на сервере rpcinfo выдаёт только три строки вместо шести, это принципиально? и как можно это поправить?
    $ rpcinfo -p | grep nfs
    100003 3 tcp 2049 nfs
    100003 4 tcp 2049 nfs
    100003 3 udp 2049 nfs
    Шара видна на линукс клиентах, но никак не видится IPTV приставкой (TVIP s-box v.530). В /etc/exports перебрал уже 100500 разных настроек - бесполезно, подозреваю, что в приведенном выше выводе нехватает нужных версий.

    Ответить
  4. Упорно не могу подключится с windows 11, ошибка
    PS C:\Users\maxya> Remove-Item -Path Alias:mount -ErrorAction Ignore
    PS C:\Users\maxya> mount -o anon \\192.168.0.50\HDD2 Y:
    Ошибка сети - 53

    Для получения дополнительных сведений введите команду "NET HELPMSG 53".

    Сервер в локальной сети

    А NAS подключает, но диска не вижу (
    PS C:\Users\maxya> mount -o anon \\192.168.100.10\HDD3 I:
    I: успешно подключен к \\192.168.100.10\HDD3

    Команда успешно выполнена.

    Ответить

Оставьте комментарий

×

Сообщить об ошибке или улучшить статью

Здесь вы можете внести исправления:

Комментарий:

×