- Настройка NFS в Ubuntu
- Немного теории
- Установка компонентов NFS
- Настройка сервера NFS в Ubuntu
- Подключение NFS
- Выводы
- How to Install and Configure an NFS Server on Ubuntu 22.04
- InstalIing NFS server on Ubuntu 22.04
- Step 1: Update system packages
- Step 2: Install NFS server
- Configuring NFS server on Ubuntu 22.04
- Step 1: Make shared NFS directory
- Step 2: Set directory permissions
- Step 3: Set file permissions
- Step 4: Grant NFS access
- Step 5: Exporting NFS directory
- Step 6: Restart NFS server
- Step 7: Grant Firewall access
- Step 8: Enable Firewall
- Step 9: Check Firewall status
- Installing NFS client on Ubuntu 22.04
- Testing NFS share on Ubuntu 22.04
- Uninstalling NFS server on Ubuntu 22.04
- Uninstalling NFS client on Ubuntu 22.04
- Conclusion
- About the author
- Sharqa Hameed
Настройка 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. Посмотреть действительно ли сейчас используются эти порты можно командой:
Также важно проверить поддерживается ли NFS на уровне ядра:
cat /proc/filesystems | grep nfs
Видим, что работает, но если нет, нужно вручную загрузить модуль ядра nfs:
Давайте еще добавим NFS в автозагрузку:
sudo systemctl enable nfs-server
На клиентском компьютере вам нужно установить пакет nfs-common, чтобы иметь возможность работать с этой файловой системой. Вам необязательно устанавливать компоненты сервера, достаточно будет только этого пакета:
sudo apt install nfs-common
Вот и все, дальше настройка NFS в Ubuntu.
Настройка сервера NFS в Ubuntu
Мы можем открыть 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 адреса, эта строка может выглядеть вот так:
Можно разрешить только нужную подсеть, например:
Для того чтобы разрешить все адреса используйте подсеть 0.0.0.0/0 или символ *.
Открытие шары NFS в Ubuntu почти завершено. Осталось разобраться с правами. Кроме ограничений IP адреса работает обычная система полномочий UNIX, поэтому если вы хотите чтобы определённый пользователь мог получить доступ к папке, то на сервере должен существовать пользователь с таким же UID и эта папка должна принадлежать ему или группе в которой он состоит.
Кроме того, обратите внимание на то, что все подключения от имени пользователя root считаются по умолчанию анонимными (nfsnobody), чтобы это отключить добавьте опцию монтирования no_root_squash, но это не безопасно, потому что любой root пользователь сможет получить доступ на запись ко всем файлам. Теперь попытаемся настроем клиента и попытаемся ее примонтировать.
Для того чтобы все пользователи могли получить доступ ко всем файлам можно создать пользователя с UID 1001 и попросить NFS все запросы считать запросами от анонимного пользователя, а анонимному пользователю присвоить UID 1001. Это делается такими опциями:
Когда все будет настроено, останется только обновить таблицу экспорта NFS:
Если на вашем сервере используется брандмауэр, то следует открыть порты 111 и 2049:
sudo ufw allow 111
sudo ufw allow 2049
Подключение NFS
Мы не будем подробно останавливаться на этом вопросе в сегодняшней статье. Это довольно большая тема, заслуживающая отдельной статьи. Но пару слов я все же скажу. Чтобы подключить сетевую папку вам не нужен никакой nfs клиент ubuntu, достаточно использовать команду mount:
sudo mount 127.0.0.1:/var/nfs/ /mnt/
Теперь вы можете попытаться создать файл в подключенной директории:
Также мы посмотрите подключенные файловые системы с помощью df:
127.0.0.1:/var/nfs 30G 6,7G 22G 24% /mnt
Чтобы отключить эту файловую систему достаточно использовать стандартный umount:
Выводы
В этой статье была рассмотрена настройка NFS в Ubuntu 20.04, как видите, все делается очень просто и прозрачно. Подключение NFS шары выполняется в несколько кликов, с помощью стандартных команд, а открытие шары NFS ненамного сложнее подключения. Если у вас остались вопросы, пишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
How to Install and Configure an NFS Server on Ubuntu 22.04
Network File Share or NFS is a protocol utilized for sharing files and directories over a network of Linux clients including Ubuntu 22.04 systems. Basically, a shared directory is created and files are added to it so that the client can easily access them. Using NFS is also considered an ideal approach when it is required to exchange common data between different client systems.
This blog will demonstrate the procedure of installing and configuring the NFS server on Ubuntu 22.04. Let’s get started.
Note: In our post, we will refer “linuxuser” as our NFS server and “ubuntuuser” machine as NFS client.
InstalIing NFS server on Ubuntu 22.04
For the purpose of installing the NFS server on Ubuntu 22.04, follow the given instructions.
Step 1: Update system packages
First of all, hit “CTRL+ALT+T” and update the system packages by running provided command:
Step 2: Install NFS server
In the next step, run the below-given command in the Ubuntu 22.04 terminal for NFS server installation:
The given output indicates that NFS server is successfully installed on Ubuntu 22.04 “linuxuser”system:
Now, let’s move toward the procedure to configure the installed NFS server.
Configuring NFS server on Ubuntu 22.04
For the configuration of the NFS server on Ubuntu 22.04, follow the given instructions.
Step 1: Make shared NFS directory
First of all, we will create a directory named “nfs_share” that is going to be shared by all client systems. To do so, write out the following command:
Step 2: Set directory permissions
Next, set the permissions of the created “nfs_share” directory so that all client machines can easily access it:
Step 3: Set file permissions
Set the file permissions as required. In our case, we have allocated the read, write, and execute permissions to the “nfs_share” directory files:
Step 4: Grant NFS access
In this step, we will grant access to the client system for accessing the NFS server. To do so, open “/etc/exports” in the “nano” editor:
Now, it is up to you whether you want to grant access to the entire subnet, single or multiple clients. For instance, we will permit an entire subnet “10.0.2.15/24” to access the NFS share:
After adding the required line, press “CTRL+O” to save the file and switch back to the Ubuntu 22.04 terminal.
Step 5: Exporting NFS directory
Utilize the provided command for exporting the NFS shared directory:
Step 6: Restart NFS server
Write out the provided command for restarting the NFS server on your Ubuntu 22.04 system:
Step 7: Grant Firewall access
Next, grant the Firewall access to the client system with the following “ufw” command:
Step 8: Enable Firewall
Enable Firewall with “ufw” command and “enable” option:
Step 9: Check Firewall status
Next, verify that the Firewall is configured to allow the access through the port “2049”:
We will now head towards the NFS client on “ubuntuuser” system to test the NFS sharing point.
Installing NFS client on Ubuntu 22.04
In order to perform NFS client installation on Ubuntu 22.04, hit “CTRL+ALT+T” and run the following command:
Testing NFS share on Ubuntu 22.04
Now, we will test the access co-ordination between NFS client “ubuntuuser” and “linuxuser” NFS server. To do so, create a mount point on the NFS client system:
Then, mount the NSF share on the other Client system:
For the testing NFS share on the client system, firstly, we will create some files in the “nfs_share” directory on the “linuxuser” NFS server:
Then, switch to the client system and view the list of files present in the “nfs_clientshare” directory:
The given output indicates that files are successfully accessed on “ubuntuuser” client via NFS server:
Uninstalling NFS server on Ubuntu 22.04
For the uninstallation of NFS server, run the following command:
Uninstalling NFS client on Ubuntu 22.04
For the uninstallation of NFS client, write out the following command in Ubuntu 22.04 terminal:
We have compiled the method to install, configure, and test NFS server on Ubuntu 22.04.
Conclusion
For the purpose of installing NFS server on Ubuntu 22.04, firstly, update system packages and run the “$ sudo apt install nfs-kernel-server” command. Then create a shared NFS directory, set the file and directory permissions, and export it. Next, install the NFS client on another system with “$ sudo apt install nfs-common” command, create a mount point, and test the access of the shared NFS directory. This blog demonstrated the method of installing, configuring, and testing the NFS server on Ubuntu 22.04.
About the author
Sharqa Hameed
I am a Linux enthusiast, I love to read Every Linux blog on the internet. I hold masters degree in computer science and am passionate about learning and teaching.