Подключение 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).

Установка Client for NFS в Windows 11

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

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

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

На Windows Server:

Install-WindowsFeature NFS-Client

Enable-WindowsOptionalFeature - ServicesForNFS-ClientOnly - установка службы клиента NFS с помощью PowerShell

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

Get-NfsClientConfiguration

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

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

Подключение сетевого каталога NFS из проводника Windows

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

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

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

mount это алиас PowerShell команды New-PSDrive

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

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

mount.exe -o anon \\192.168.158.147\nfsshare K:

mount.exe команда монтирования NFS директории под анонимным пользователем

  • -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.147\nfsshare -Persist

New-PSdrive создать подключение к NFS хранилищу

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

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

вкладка NFS Attributes

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

Beta: Использовать UTF-8 для поддержки языков по всему миру

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

Remove-PSDrive N

Или

umount.exe K:\

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

анонимном подключении к NFS-серверу использует UID=-2 и GID=-

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

reg add "HKLM\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" /v AnonymousUid /t REG_DWORD /d 00000000 /f

reg add "HKLM\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" /v AnonymousGid /t REG_DWORD /d 00000000 /f

параметры реестра AnonymousUid и AnonymousGid для NFS

После внесения изменения нужно перезапустить службы 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:\Windows\System32\drivers\etc .

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

Файл passwd:

user1:x:1000:100:User1:C:\Users\user1

Файл group:

users:x:100:user1

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

Get-NfsMappedIdentity -AccountName user1 -AccountType User

Get-NfsMappedIdentity

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

Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)