Перейти до змісту

Мережева файлова система

Знання: ⭐ ⭐ Складність: ⭐ ⭐

Час читання: 15 хвилин

Network File System (NFS) — мережева система обміну файлами.

Загальні положення

NFS — це клієнт/серверний протокол: сервер надає ресурси файлової системи для всієї або частини мережі (клієнтів).

Зв’язок між клієнтами та сервером відбувається за допомогою Remote Procedure Call (RPC) служби.

Віддалені файли монтуються в каталог і відображаються як локальна файлова система. Користувачі клієнта безперешкодно отримують доступ до спільних файлів, доступних серверу, переглядаючи каталоги так, ніби вони локальні.

Інсталяція

Для роботи NFS потрібні дві служби:

  • Служба network (звичайно)
  • Служба rpcbind

Перегляньте стан служб за допомогою команди:

systemctl status rpcbind

Якщо пакет nfs-utils не встановлено:

sudo dnf install nfs-utils

Пакет nfs-utils потребує встановлення кількох залежностей, зокрема rpcbind.

Запустіть службу NFS за допомогою:

sudo systemctl enable --now nfs-server rpcbind

Встановлення служби NFS створює двох користувачів:

  • nobody: використовується для анонімних з’єднань
  • rpcuser: для роботи протоколу RPC

Налаштування брандмауера необхідне:

sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent 
sudo firewall-cmd --reload

Конфігурація сервера

Увага

Права на каталог і права NFS мають узгоджуватися.

Файл /etc/exports

Налаштуйте спільні ресурси за допомогою файлу /etc/exports. Кожен рядок у цьому файлі відповідає спільному ресурсу NFS.

/share_name client1(permissions) client2(permissions)
  • /share_name: абсолютний шлях до спільного каталогу
  • clients: клієнти, яким надано доступ до ресурсів
  • (permissions): дозволи на ресурси

Оголошуйте машини, авторизовані для доступу до ресурсів за допомогою:

  • IP-адреса: 192.168.1.2
  • Мережева адреса: 192.168.1.0/255.255.255.0 або формат CIDR 192.168.1.0/24
  • FQDN: client_*.rockylinux.org: дозволяє FQDN починатися з client_ з домену rockylinux.org
  • * для всіх

Кілька специфікацій клієнта можливі в одному рядку, розділених пробілом.

Дозволи на ресурси

Є два типи дозволів:

  • ro: лише для читання
  • rw: читання-запис

Якщо права не вказано, застосоване право буде лише для читання.

За замовчуванням сервер NFS зберігає UID і GID користувача клієнта (за винятком root).

Щоб примусово використовувати UID або GID, відмінні від ідентифікатора користувача, який створює ресурс, укажіть параметри anonuid=UID і anongid=GID або вкажіть anonymous доступ до даних за допомогою параметра all_squash.

Увага

Параметр no_root_squash визначає користувача root клієнта як користувача root сервера. Цей параметр може бути небезпечним з точки зору безпеки системи.

Активація параметра root_squash є типовою (навіть якщо не вказано), ідентифікуючи root як анонімного користувача.

Приклади застосування

  • /share client(ro,all_squash) Користувачі клієнта мають доступ лише для читання до ресурсів і ідентифікуються як анонімні на сервері.

  • /share client(rw) Користувачі клієнта можуть змінювати ресурси та зберігати свій UID на сервері. Лише root ідентифікується як anonymous.

  • /share client1(rw) client2(ro) Користувачі клієнтської робочої станції 1 можуть змінювати ресурси, а користувачі клієнтської робочої станції 2 мають доступ лише для читання. UID зберігаються на сервері, і лише root визначається як anonymous.

  • /share client(rw,all_squash,anonuid=1001,anongid=100) Користувачі Client1 можуть змінювати ресурси. Їх UID змінено на 1001, а GID на 100 на сервері.

Команда exportfs

Команда exportfs (експортовані файлові системи) використовується для керування таблицею локальних файлів, спільних для клієнтів NFS.

exportfs [-a] [-r] [-u share_name] [-v]
Опції Опис
-a Вмикає спільний доступ до NFS
-r Застосовує спільні ресурси з файлу /etc/exports
-u share_name Вимикає певний спільний доступ
-v Відображає список спільних ресурсів

Команда showmount

Команда showmount стежить за клієнтами.

showmount [-a] [-e] [host]
Опції Опис
-e Відображає спільні ресурси на призначеному сервері
-a Відображає всі поточні спільні ресурси на сервері

Ця команда також визначає, чи може робоча станція клієнта монтувати спільні ресурси.

Примітка

showmount сортує та приховує дублікати в результатах, тому неможливо визначити, чи здійснив клієнт кілька монтувань одного каталогу.

Конфігурація клієнта

Спільні ресурси на сервері NFS доступні через точку монтування на клієнті.

Якщо потрібно, створіть локальну папку для монтування:

sudo mkdir /mnt/nfs

Список доступних спільних ресурсів NFS на сервері:

$ showmount –e 172.16.1.10
/share *

Підключіть спільний ресурс NFS сервера:

mount –t nfs 172.16.1.10:/share /mnt/nfs

Автоматизація монтування може відбутися під час запуску системи за допомогою файлу /etc/fstab:

$ sudo vim /etc/fstab
172.16.1.10:/share /mnt/nfs nfs defaults 0 0

Author: Antoine Le Morvan

Contributors: Steven Spencer, Serge, Ganna Zhyrnova