NFS или Network File System - это протокол распределенной файловой системы, первоначально разработанный только компанией Sun Microsystems. С помощью NFS вы можете позволить системе обмениваться каталогами и файлами с другими системами по сети. Благодаря совместному использованию файлов NFS, пользователи и даже программы могут получать доступ к информации на удаленных системах почти так же, как если бы они находились на локальной машине.
NFS работает в среде клиент-сервер, где сервер отвечает за управление аутентификацией, авторизацией и администрированием клиентов, а также за все данные, совместно используемые в конкретной файловой системе. После авторизации любое количество клиентов может получить доступ к общим данным, как если бы они находились в их внутреннем хранилище. Установить NFS-сервер в вашей системе Ubuntu очень просто. Вам нужно только выполнить несколько необходимых установок и конфигураций, как на сервере, так и на клиентских машинах, и вы готовы к работе.
В этой статье мы шаг за шагом объясним, как настроить NFS-сервер и клиент, позволяющие обмениваться файлами с одной системы Ubuntu на другую.
Настройка хост-сервера
Чтобы настроить хост-систему для совместного доступа к каталогам, нам нужно установить на ней сервер NFS Kernel, а затем создать и экспортировать каталоги, к которым мы хотим предоставить доступ клиентским системам. Для плавной настройки хост-системы выполните следующие шаги:
Шаг 1: Установка сервера ядра NFS
Перед установкой сервера NFS Kernel нам необходимо обновить индекс репозитория нашей системы с индексом репозитория Интернета с помощью следующей команды apt от имени sudo:
1 | sudo apt-get update |
Вышеуказанная команда позволяет нам установить последнюю доступную версию программного обеспечения через репозитории Ubuntu.
Теперь выполните следующую команду, чтобы установить NFS Kernel Server в вашей системе:
1 | sudo apt install nfs-kernel-server |
Система предложит вам ввести Y/n, чтобы подтвердить, хотите ли вы продолжить установку. Введите Y и нажмите Enter для продолжения, после чего программное обеспечение будет успешно установлено на вашу систему.
Шаг 2: Создание каталога экспорта
Каталог, которым мы хотим поделиться с клиентской системой, называется экспортным каталогом. Вы можете назвать его по своему усмотрению; здесь мы создаем каталог экспорта с именем "sharedfolder" в каталоге mnt(mount) нашей системы.
Используйте следующую команду, указав имя папки mount в соответствии с вашими потребностями, с помощью следующей команды от имени root:
1 | sudo mkdir -p /mnt/sharedfolder |
Поскольку мы хотим, чтобы все клиенты имели доступ к каталогу, мы снимем ограничительные разрешения с папки экспорта с помощью следующих команд:
1 2 | sudo chown nobody:nogroup /mnt/sharedfolder sudo chmod 777 /mnt/sharedfolder |
Теперь все пользователи всех групп на клиентской системе смогут получить доступ к нашей "общей папке". Вы можете создать столько вложенных папок в папке экспорта, сколько захотите, чтобы клиент мог получить к ним доступ.
Шаг 3: Назначение доступа к серверу клиенту(ам) через файл экспорта NFS
После создания папки экспорта нам нужно будет предоставить клиентам разрешение на доступ к серверной машине. Это разрешение определяется через файл exports, расположенный в папке /etc вашей системы. Чтобы открыть этот файл через редактор Nano, выполните следующую команду:
1 | sudo nano /etc/exports |
Для редактирования этого файла требуется доступ root, поэтому вам необходимо использовать команду sudo. Вы также можете открыть этот файл в любом из ваших любимых текстовых редакторов.
Открыв файл, вы можете разрешить доступ:
Одному клиенту, добавив в файл следующую строку:
1 | /mnt/sharedfolder [clientIP](rw,sync,no_subtree_check) |
Нескольким клиентам, добавив следующие строки в файл:
1 2 | /mnt/sharedfolder [client1IP](rw,sync,no_subtree_check) /mnt/sharedfolder [client2IP](rw,sync,no_subtree_check) |
Несколько клиентов, указав всю подсеть, к которой принадлежат клиенты:
1 | /mnt/sharedfolder [subnetIP/24](rw,sync,no_subtree_check) |
В этом примере мы указываем целую подсеть всех клиентов, которым мы хотим предоставить доступ к нашей папке экспорта (sharedfolder):
Добавьте необходимые строки в файл экспорта и сохраните его, нажав Ctrl+X, введя Y, а затем нажав Enter.
Разрешения "rw,sync,no_subtree_check", определенные в этом файле, означают, что клиент(ы) могут выполнять:
- rw: операции чтения и записи
- sync: записывать любые изменения на диск перед их применением
- no_subtree_check: предотвратить проверку поддеревьев
Шаг 4: Экспорт общего каталога
После выполнения всех вышеперечисленных настроек в хост-системе пришло время экспортировать общий каталог с помощью следующей команды sudo:
1 | sudo exportfs -a |
Наконец, чтобы все конфигурации вступили в силу, перезапустите сервер NFS Kernel следующим образом:
1 | sudo systemctl restart nfs-kernel-server |
Шаг 5: Откройте брандмауэр для клиента (-ов)
Важным шагом является проверка того, что брандмауэр сервера открыт для клиентов, чтобы они могли получить доступ к общему содержимому. Следующая команда настроит брандмауэр для предоставления доступа клиентам через NFS:
1 | sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs |
В нашем примере мы предоставляем доступ к целой подсети клиентских машин с помощью следующей команды:
1 | sudo ufw allow from 192.168.153.0/24 to any port nfs |
Теперь, когда вы проверите статус вашего брандмауэра Ubuntu с помощью следующей команды, вы сможете увидеть статус действия как "Разрешить" для IP клиента.
1 | sudo ufw status |
Теперь ваш хост-сервер готов экспортировать общую папку на указанный клиент(ы) через сервер ядра NFS.
Настройка клиентской машины
Теперь настало время выполнить несколько простых настроек клиентской машины, чтобы общая папка с хоста могла быть смонтирована на клиенте, а затем к ней можно было беспрепятственно получить доступ.
Шаг 1: Установите NFS Common
Перед установкой приложения NFS Common нам необходимо обновить индекс репозитория нашей системы с индексом репозитория Интернета с помощью следующей команды apt от имени sudo:
1 | sudo apt-get update |
Приведенная выше команда позволяет нам установить последнюю доступную версию программного обеспечения через репозитории Ubuntu.
Теперь выполните следующую команду, чтобы установить клиент NFS Common в вашей системе:
1 | sudo apt-get install nfs-common |
Система предложит вам ввести Y/n, чтобы подтвердить, хотите ли вы продолжить установку. Пожалуйста, введите Y и нажмите Enter для продолжения, после чего программное обеспечение будет успешно установлено на вашу систему
Шаг 2: Создайте точку монтирования для общей папки хоста NFS
Системе вашего клиента необходим каталог, в котором будет доступен весь контент, совместно используемый хост-сервером в папке экспорта. Вы можете создать эту папку в любом месте вашей системы. Мы создаем папку mount в каталоге mnt машины нашего клиента:
1 | sudo mkdir -p /mnt/sharedfolder_client |
Шаг 3: Смонтируйте общий каталог на клиенте
Папка, которую вы создали в вышеописанном шаге, похожа на любую другую папку в вашей системе, пока вы не смонтируете общий каталог с хоста в эту вновь созданную папку.
Используйте следующую команду для монтирования общей папки с хоста в монтируемую папку на клиенте:
1 | sudo mount [serverIP]:/[exportFolder_server] /mnt/[mountfolder_client] |
В нашем примере мы выполняем следующую команду для экспорта нашей "sharedfolder" с сервера в папку монтирования "sharedfolder_client" на клиентской машине:
1 | sudo mount 192.168.153.130:/mnt/sharedfolder /mnt/sharedfolder_client |
Шаг 4: Протестируйте соединение
Создайте или сохраните файл в папке экспорта хост-сервера NFS. Теперь откройте папку mount на клиентской машине; вы должны иметь возможность просмотреть тот же файл, доступный в этой папке.
я проверяю подключение выполнив на клиентской машине (192.168.153.141) следующую команду
1 | ip a > /mnt/sharedfolder_client/ip.txt |
Результат проверки на сервере
Заключение
Настройка клиент-серверной среды NFS на системах Ubuntu - простая задача. Из этой статьи вы узнали, как установить необходимые пакеты NFS на сервере и клиентах. Вы также узнали, как настроить сервер NFS и клиентские машины так, чтобы папки были доступны для общего доступа, а затем к ним можно было получить доступ без каких-либо проблем с брандмауэром или разрешениями. Теперь вы можете легко обмениваться содержимым с одной системы Ubuntu на другую, используя протокол NFS.