NFS (Network File System) - это протокол сетевого файлового обмена, который позволяет удаленным пользователям монтировать удаленные файловые системы на своих локальных устройствах и работать с ними так, как будто они находятся непосредственно на их компьютере.
NFS был разработан в 1984 году и является одним из стандартных протоколов, используемых в UNIX-подобных операционных системах для совместного доступа к файлам. С помощью NFS можно совместно использовать файлы между компьютерами в локальной сети, что позволяет снизить нагрузку на сервера и упростить администрирование сети.
NFS работает по принципу клиент-сервер, где клиентские компьютеры могут монтировать удаленные файловые системы, предоставляемые сервером, и использовать их как локальные. Для работы с NFS необходимо настроить сервер и клиентские компьютеры, а также настроить права доступа к файловым ресурсам на сервере.
Пример:
сервер: 192.168.88.78
клиент: 192.168.88.77
nfs использует порты 111 и 2049.
############################
# настрока сервера
############################
$ sudo apt install nfs-kernel-server -y
$ sudo systemctl enable nfs-kernel-server
$ sudo mkdir -p /nfsshare
$ sudo chmod 777 -R /nfsshare
$ sudo chown nobody:nogroup /nfsshare
$ sudo nano /etc/exports
добавляем строку:
/nfsshare 192.168.88.0/24(rw,sync,no_subtree_check)
* перезапуск таблицы экспорта
$ sudo exportfs -ra
* после редактирования exports нужно перезапустить службу:
$ sudo systemctl restart nfs-kernel-server
############################
# настрока клиента
############################
$ sudo apt install nfs-common -y
$ sudo mkdir -p /nfs
* *создаем каталог для подключена nfs папки.
$ sudo chown nobody:nogroup /nfs
* в ручную подключаем nfs диск в папку /nfs:
$ sudo mount 192.168.88.78:/nfsshare /nfs
* проверяем:
$ df -h
* создаем тестовый пустой файл на ресурсе.
$ sudo touch /nfs/nfsshare/testfile
(потом нужно проверить появился ли testfile на сервере в папке /nfsshare)
* Автоматическое подключение NFS диска при старте системы:
$ sudo nano /etc/fstab
* доюавляем в конец файла
192.168.88.78:/nfsshare /nfs nfs defaults 0 0
##########################################
описание опций файла /etc/exports на сервере:
##########################################
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 для анонимного пользователя.