Подключение NFS директорий встроенным клиентом Windows

В современных версиях Windows есть встроенный NFS клиент, который позволяет напрямую монтировать NFS директории с Linux хостов или NAS устройств и получать прозрачный доступ к файлам и папкам на них. В этой статье мы покажем, как включить NFS клиент в Windows, смонтировать сетевую папку NFS и особенности маппинга Windows пользователей в UID/GID пользователей Linux.

Установка NFS клиента в Windows

Начиная с Windows 10, появился встроенный NFS клиент, который можно использовать для подключения сетевых ресурсов NFS. По умолчанию клиент NFS не установлен. Включить его можно через панель управления компонентами Windows Features ( optionalfeatures ): разверните Services for NFS и включите опцию Client for NFS (дополнительно можно установить административные утилиты NFS).

Или можно установить клиент NFS с помощью PowerShell.

На десктопных платформах (Windows 10 и 11):

Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart

На Windows Server:

Install-WindowsFeature NFS-Client

Вывести все настройки NFS клиента в Windows:
Get-NfsClientConfiguration

Подключаем сетевую папку NFS в Windows

Сетевую папку NFS можно смонтировать в Windows прямо из графического интерфейса проводника Windows, как обычную сетевую папку. Выберите опцию Map network drive в File Explorer, укажите сетевой путь к NFS директории (в стандартном UNC формате, например \192.168.158.147nfsshare ) и укажите букву, которую нужно назначить этому диску.

Однако в таком режиме нельзя задать дополнительные опции подключения к NFS шаре.

Удобнее монтировать NFS папки из командной строки с помощью:

  • Консольной утилиты mount.exe
  • PowerShell командлета New-PSdrive
Обратите внимание, что при запуске команды mount из консоли PowerShell или терминала Windows, нужно указывать ее полное имя, включая расширение: mount.exe . Дело в том, что в PowerShell команда mount является алиасом для командлета New-PSDrive.

Откройте командную строку (или PowerShell консоль) с правами пользователя (не администратора!!!, иначе смонтированный NFS диск не будет виден в проводнике пользователя, подробнее об этом в статье о доступе к сетевым дисками с правами администратора).

Выполните команду монтирования NFS директории:

mount.exe -o anon \192.168.158.147nfsshare K:

  • -o anon – подключаем NFS папку под анонимным пользователем
  • 192.168.158.147 – адрес/имя NFS сервера
  • /nfsshare – локальный путь к каталогу на сервере NFS. Если в качестве NFS сервера используется Linux хост c NFS3, то нужно указывать полный локальный путь к NFS директории от корня файловой системы, например host:/mnt/nfs/nfsshare1
  • N: — буква диска, которую вы хотите назначить папке
Для лучшей совместимости с Linux, в которых чувствительны к регистру имена файлов и директорий (в отличии от Windows), нужно добавить опцию casesensitive=yes

Или PowerShell аналог команды монтирования NFS:

New-PSdrive -PSProvider FileSystem -Name N -Root \192.168.158.147nfsshare -Persist

Опция Persist указывает, что подключение к этому NFS каталогу нужно восстанавливать автоматически после перезагрузки компьютера (у команды mount.exe такой опции нет)

Теперь вы можете получать доступ к файлам в сетевой директории NFS прямо из проводника Windows и других приложений. Обратите внимание, что в свойствах объектов в NFS папке, проводник отображает новую вкладку NFS Attributes, где можно получить информацию о разрешениях и владельцах файлов.

Также имейте в виду, что, если в имени файла в сетевой папке NFS содержатся кириллица (или друге национальные символы), он может либо не отображаться, либо имя такого файла может отображаться кракозябрами. В качестве обходного решения можно включить поддержку UTF-8 в Windows (до сих пор находится в статусе бета): intl.cpl -> Административные -> Изменить язык системы -> галочка Beta: Использовать UTF-8 для поддержки языков по всему миру

Отмонтировать сетевую папку NFS:

Remove-PSDrive N

Или

umount.exe K:

Выполните команду mount.exe , чтобы отобразить опции, с которыми подключена NFS директория:

Windows при анонимном подключении к NFS-серверу использует UID=-2 и GID=-2 по умолчанию для сопоставления подключающегося пользователя в пользователя на удалённом сервере. Если вы хотите использовать определенные UID/GID пользователя Linux для анонимного подключения NFS директории, эти значения можно переопределить в параметрах AnonymousUid и AnonymousGid в ветке реестра HKLMSOFTWAREMicrosoftClientForNFSCurrentVersionDefault . Например, следующие параметры заставят NFS-клиент использовать UID=0 и GID=0 ( root -пользователь Linux) при анонимных подключениях вместо дефолтных -2:

reg add "HKLMSOFTWAREMicrosoftClientForNFSCurrentVersionDefault" /v AnonymousUid /t REG_DWORD /d 00000000 /f

reg add "HKLMSOFTWAREMicrosoftClientForNFSCurrentVersionDefault" /v AnonymousGid /t REG_DWORD /d 00000000 /f

После внесения изменения нужно перезапустить службы NFS:

Restart-Service nfsrdr,nfsclnt -Force

Однако использование анонимного доступа к NFS не самое безопасное решение. Лучше настроить маппинг Windows пользователей в UID и GID пользователя Linux:

В домене AD можно включить маппинг пользователей:

Set-NfsMappingStore -EnableADLookup $true

Set-NfsMappedIdentity -MappingStore AD -UserName "kbuldogov" -UserIdentifier 1000 -GroupIdentifier 100

Или отредактировать в атрибутах пользователя AD параметры uidnumber и gidnumber.

Set-ADUser -identity user1 -replace @{uidNumber="<user_uid>";gidNumber="<user_gid>"}

Подробнее о настройке маппинга пользователей NFS в Windows.

На отдельно-стоящих машинах (в рабочих группах, или когда вы не хотите использовать маппинг через AD), можно настроить сопоставление имен Windows пользователей в Unix UID/GID через файлы passwd и group в каталоге C:WindowsSystem32driversetc .

Например, для локального пользователя user1:

Файл passwd:

user1:x:1000:100:User1:C:Usersuser1

Файл group:

users:x:100:user1

Проверить маппинг конкретного пользователя Windows в UID/GID Linux можно командой:

Get-NfsMappedIdentity -AccountName user1 -AccountType User

Службу NFS сервера можно установить на платформе Windows Server, для этого есть отдельный встроенный компонент роли файлового сервера.


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *