Использование клиента NFS в Windows 10 редакции Professional
Администрируя серверы на базе ОС Linux в среде, где в качестве основной клиентской ОС используется Windows, время от времени приходится сталкиваться с необходимостью что-либо скопировать с клиентской Windows на Linux-систему или наоборот, с Linux-системы на Windows. Чаще всего для этого используются возможности протоколов SSH/SCP с помощью таких инструментов, как например, утилита pscp.exe. Но когда приходится сталкиваться с файловыми Linux-серверами, позволяющими использовать возможности протокола NFS, мы можем задаться вопросами типа «может ли клиентская ОС Windows выступать в качестве NFS-клиента?», «есть ли в клиентской ОС Windows какая-то встроенная реализация клиента NFS?». Именно такие вопросы у меня возникли в период времени, который совпал с периодом, когда мы перебирались с Windows 8.1 на первый релиз Windows 10. Информация, которую в тот момент удалось найти по этому вопросу, заключалась в том, что функциональность NFS-клиента имеют только «старшие» редакции клиентских ОС Windows, такие как Windows 7 Ultimate/Enterprise, Windows 8/8.1 Enterprise и Windows 10 Enterprise. Однако в нашем случае использовалась ОС Windows 10 редакции Professional, поэтому пришлось отбросить эти мысли.
Недавно, читая обсуждения на форумах TechNet, я столкнулся с информацией о том, что с какого-то момента времени в ОС Windows 10 редакции Professional появилась возможность использовать функционал NFS-клиента. По информации из некоторых источников такая возможность появилась в Windows 10 версии 1607 (10.0.14393 / Anniversary Update).
Решив проверить эту информацию на имеющейся у меня под руками Windows 10 1803 (10.0.17134 / April 2018 Update) редакции Professional, я обнаружил, что теперь у нас действительно имеется возможность использования этого функционала.
Чтобы включить NFS-клиента, можем воспользоваться оснасткой управления программами и компонентами appwiz.cpl. Здесь в перечне «компонентов Windows» можно найти доступные к включению «Службы для NFS«.
После завершения установки компонент в Панели управления в разделе «Администрирование» появится оснастка «Службы для NFS» (nfsmgmt.msc), в которой мы сможем управлять некоторым параметрами работы NFS-клиента.
Предполагаем, что на стороне NFS сервера уже настроены разрешения для доступа с клиентской системы, например, явно разрешён доступ по IP адресу клиента. Простейший пример установки и настройки NFS-сервера на стороне CentOS Linux можно найти в статье Вики «Установка и настройка сервера и клиента NFS в CentOS Linux 7.2».
После настройки прав доступа на стороне NFS-сервера переходим на Windows 10 и выполняем подключение сетевого каталога с помощью утилиты «mount«. Простейший пример анонимного подключения к сетевому каталогу выглядит так:
- «-o anon» — подключаться с правами анонимного пользователя;
- «KOM-FS01» — имя NFS-сервера;
- «mnt\vdo-vd1\ovirt-iso-domain» — локальный путь к каталогу на NFS-сервере;
- «I» — буква диска Windows
Другие доступные параметры и ключи утилиты, можно посмотреть командой «mount /?«. Например, при подключении мы явно можем указать имя пользователь и пароль на NFS-сервере.
При открытии свойств каталогов и файлов в подключённом NFS-каталоге мы увидим специальную вкладку «Атрибуты NFS» с соответствующими атрибутами, в том числе и информацию о текущих разрешениях на каталог/файл, которыми, в случае достаточных прав, мы можем управлять.
При повторном выполнении команды mount без указания параметров, мы получим сведения о текущий подключениях NFS-клиента и свойствах этих подключений:
Здесь мы сможем увидеть то, с какими UID и GUID, выполнено подключение. Для анонимных подключений это по умолчанию -2/-2. Если по какой-то причине у нас возникнет необходимость изменить эти идентификаторы для всех анонимных клиентских подключений, то мы можем добавить пару отсутствующих по умолчанию параметров реестра типа DWORD (32-бита):
В значениях созданных параметров можно записать нужные UID и GUID, которые будут использоваться при всех анонимных подключениях. На скриншоте ниже используется пример со значениями 1000:1000 (десятичное).
Если мы хотим, чтобы все анонимные подключения использовали root-овые идентификаторы, то в соответствующих параметрах реестра нужно указать AnonymousUid = 0 и AnonymousGid = 0. Указание root-овых идентификаторов может быть полезно в случае, если, например, нам требуется не только чтение, но запись в подключенном NFS-каталоге, а удалённый NFS-сервер разрешает запись только root-пользователю и/или членам группы root.
Для вступления изменений в силу потребуется выполнить остановку и повторный запуск службы клиента NFS из ранее упомянутой оснастки «Службы для NFS» (nfsmgmt.msc).
Либо, если перезапуск компьютера не составляет проблемы, то для вступления изменений в силу можно выполнить и перезагрузку клиентского компьютера.
Здесь хочу сделать маленькое отступление относительно перезапуска службы клиента NFS и поделиться своими наблюдениями.
Мои попытки перезапускать системную службу «Клиент для NFS» (NfsClnt) через стандартные механизмы, такие как оснастку управления службами services.msc или утилиту «net«, показали, что это по какой-то причине приводит к невозможности запуска службы после её остановки. Поэтому для перезапуска NFS-клиента лучше использовать именно «родную» оснастку. Хотя, опять же, замечено, что многократные остановки/запуски службы в оснастке «Службы для NFS» также могут привести к неадекватной работе NFS-клиента. В результате чего, например, утилита «mount» может перестать подключать NFS-каталоги, выдавая ошибку сети:
В таких случаях помогает только перезагрузка клиентского компьютера, после которой всё снова начинает работать.
После того, как нужные нам изменения внесены в реестр и служба клиента NFS успешно перезапущена, снова попытаемся подключить NFS-каталог и посмотрим командой «mount» сведения о подключениях.
Как видим, теперь в качестве идентификаторов безопасности выступают именно те, что были ранее нами указаны в реестре.
Отключение подключенных по протоколу NFS сетевых ресурсов выполняется также просто, как и подключение, только с помощью другой утилиты – «umount«
В общем это хорошо, что теперь у пользователей ОС Windows 10 редакции Professional есть штатная возможность работать с сетевыми файловыми ресурсами по протоколу NFS. Будем использовать это в работе.
Как подключить NFS каталог в Windows 10
В Unix-подобных операционных системах подключить каталога NFS (Network File System) довольно просто, однако если вам понадобится использовать NFS шару в Windows, придется выполнить ряд дополнительных действий. В этой статье мы покажем, как в Windows 10 подключить NFS каталог, который находинся на UNIX системе. Все описанные инструкции будут работать в Windows 10 Pro (версия 10.0.14393 и выше).
Установка клиента NFS (службы для NFS)
В первую очередь в Windows 10 нужно установить клиент NFS. Для установки необходимо выполнить следующие шаги:
- Откройте раздел «Programs and Features».
- Щелкните по пункту «Turn Windows features on or off».
- В появившемся списке в разделе Services for NFS включите NFS клиента (Client for NFS), а затем нажмите «ОК».
- После установки нажмите кнопку «Close» и вернитесь на рабочий стол.
Как разрешить запись в NFS каталог анонимному пользователю
По умолчанию при подключении NFS каталога с UNIX системы, анонимному пользователю (anonymous) предоставляются права только на чтение. Чтобы предоставить анонимным пользователям право записи, необходимо изменить значения UID и GID, которые используются для монтирования NFS каталога в Windows. Пример стандартных настроек представлен на рисунке ниже.
Чтобы изменить значение полей UID и GID, нам потребуется внести изменения в реестр Windows.
- Откройте редактор реестра regedit.
- Перейдите в ветку реестра — HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default.
- В каталоге «Default» создайте новый параметр типа DWORD (32бит) с именем AnonymousUid и назначьте UID, назначенный на каталог в UNIX, к которому открыт доступ через NFS.
- В ветке Default создайте ещё один параметр DWORD (32-бит) с именем AnonymousGid и назначьте GID, назначенный данному каталогу в UNIX.
Список подключенных NFS каталогов и параметры монтирования можно вывести с помощью команды Mount без параметров.
Результат работы команды mount теперь должен выглядеть следующим образом:
Local Remote Properties
——————————————————————————-
Z: \\10.1.1.211\mnt\vms UID=0, GID=0
rsize=1078756, wsize=1078756
mount=soft, timeout=1.6
retry=1, locking=yes
fileaccess=755, lang=ANSI
casesensitive=no
sec=sys
Обратите внимание на значение полей UID и GID, которое равно 0. UID=0, GID=0 — означает, что общий ресурс монтируется под пользователем root.
Как подключить NFS каталог в Windows 10
Смонтировать NFS каталог в Windows 10 можно с помощью команды mount. Например, смонтируем NFS каталог и назначим ему букву диска Z:. Предположим, что ваше NAS устройство находится в той же сети, что и ваш компьютер с установленной операционной системы Windows, а IP-адрес устройства — 10.1.1.211. С помощью следующей команды можно смонтировать общий ресурс NFS в /mnt/vms.
Mount –o anon \\10.1.1.211\mnt\vms Z:
Z: is now successfully connected to \\10.1.1.211\mnt\vms
The command completed successfully .
Теперь общий ресурс создан, и мы можем получить доступ к данным. В нашем примере сетевой ресурс (диск) обозначается буквой «Z».
На этом настройка NFS завершена и вы сможете сохранять данные на свое NAS устройство через смонтированный NFS каталог. Обратите внимание, что при в первый раз открытие этого каталога выполняется довольно долго.
Подготовка устройств на основе NFC NFC-based device provisioning
Применимо к: Applies to
- Windows10 Mobile Windows10 Mobile
Радиочастотная связь ближнего действия (NFC) позволяет устройствам с Windows 10 Mobile Корпоративная и Windows 10 Mobile взаимодействовать друг с другом посредством NFC-метки или другого передающего устройства с поддержкой NFC. Near field communication (NFC) enables Windows 10 Mobile Enterprise and Windows 10 Mobile devices to communicate with an NFC tag or another NFC-enabled transmitting device. Организации, в которых выполняется массовая подготовка, могут выполнять подготовку с помощью устройств с поддержкой NFC для предоставления пакета подготовки подготавливаемому устройству. Enterprises that do bulk provisioning can use NFC-based device provisioning to provide a provisioning package to the device that’s being provisioned. Подготовка с помощью NFC— это простой и удобный метод, с помощью которого можно без труда сохранить полный пакет подготовки. NFC provisioning is simple and convenient and it can easily store an entire provisioning package.
Возможность подготовки с помощью NFC позволяет администратору предоставлять пакет подготовки во время начальной настройки устройства (на этапе запуска при первом включении или этапе OOBE). The NFC provisioning option enables the administrator to provide a provisioning package during initial device setup (the out-of-box experience or OOBE phase). Администраторы могут использовать возможность подготовки по NFC для передачи данных подготовки в постоянное хранилище, связав неподготовленное мобильное устройство с NFC-меткой или с устройством с поддержкой NFC. Administrators can use the NFC provisioning option to transfer provisioning information to persistent storage by tapping an unprovisioned mobile device to an NFC tag or NFC-enabled device. Чтобы можно было использовать NFC для предварительной подготовки устройства, необходимо подготовить собственные NFC-метки, сохранив пакет подготовки в метке, как описано в этом разделе, или создать инфраструктуру, требующуюся для передачи пакета подготовки с устройства с поддержкой NFC на мобильное устройство во время запуска при первом включении. To use NFC for pre-provisioning a device, you must either prepare your own NFC tags by storing your provisioning package to a tag as described in this section, or build the infrastructure needed to transmit a provisioning package between an NFC-enabled device and a mobile device during OOBE.
Подготовка пользовательского интерфейса OOBE Provisioning OOBE UI
У всех образов Windows 10 Mobile Корпоративная и Windows 10 Mobile есть функция подготовки с помощью NFC, которая встроена в операционную систему. All Windows 10 Mobile Enterprise and Windows 10 Mobile images have the NFC provisioning capability incorporated into the operating system. На устройствах с поддержкой NFC, которые работают под управлением Windows 10 Mobile Корпоративная или Windows 10 Mobile, подготовка устройств на основе NFC предоставляет дополнительный механизм для подготовки устройства во время этапа OOBE. On devices that support NFC and are running Windows 10 Mobile Enterprise or Windows 10 Mobile, NFC-based device provisioning provides an additional mechanism to provision the device during OOBE.
На всех устройствах с Windows подготовку устройства во время запуска при первом включении можно запустить пятью быстрыми нажатиями аппаратной клавиши Windows, что приведет к отображению экрана Подготовка этого устройства. On all Windows devices, device provisioning during OOBE can be triggered by 5 fast taps on the Windows hardware key, which shows the Provision this device screen. В окне Подготовка этого устройства выберите NFC для выполнения подготовки с помощью NFC. In the Provision this device screen, select NFC for NFC-based provisioning.
В случае возникновения ошибки во время подготовки с помощью NFC на устройстве отобразится соответствующее сообщение, если возникла любая из следующих ошибок: If there is an error during NFC provisioning, the device will show a message if any of the following errors occur:
- Ошибка инициализации NFC— может быть вызвана любой ошибкой, возникшей перед началом передачи данных. NFC initialization error — This can be caused by any error that occurs before data transfer has started. Например, если не включен драйвер NFC или возникает ошибка связи с API близкого взаимодействия. For example, if the NFC driver isn’t enabled or there’s an error communicating with the proximity API.
- Прерванная загрузка или неполная передача пакета— эта ошибка может возникать, если одноранговое устройство находится вне зоны действия NFC или если передача данных была прервана. Interrupted download or incomplete package transfer — This error can happen if the peer device is out of range or the transfer is aborted. Эта ошибка может возникать всякий раз, когда подготавливаемому устройству не удается получить пакет подготовки во время. This error can be caused whenever the device being provisioned fails to receive the provisioning package in time.
- Неправильный формат пакета— эта ошибка может быть связана с возникновением любой ошибки протокола, с которой сталкивается операционная система во время передачи данных между устройствами. Incorrect package format — This error can be caused by any protocol error that the operating system encounters during the data transfer between the devices.
- Связь NFC отключена политикой— организации могут использовать политики, чтобы запретить использование NFC на управляемом устройстве. NFC is disabled by policy — Enterprises can use policies to disallow any NFC usage on the managed device. В этом случае функция NFC отключена. In this case, NFC functionality is not enabled.
NFC-метка NFC tag
Вы можете использовать NFC-метку для подготовки небольших пакетов и метку устройства с поддержкой NFC для подготовки более крупных пакетов. You can use an NFC tag for minimal provisioning and use an NFC-enabled device tag for larger provisioning packages.
Протокол, используемый для подготовки устройств на основе NFC, аналогичен протоколу, используемому для подготовки с помощью NFC в ОС Windows Embedded 8.1 Handheld, в которой была реализована поддержка как одноблочной передачи данных, так и многоблочной передачи, когда общий размер передаваемых данных не помещался в одно сообщение NDEP. The protocol used for NFC-based device provisioning is similar to the one used for NFC provisioning on Windows Embedded 8.1 Handheld, which supported both single-chunk and multi-chunk transfer when the total transfer didn’t fit in one NDEP message size. В Windows 10 стек подготовки содержит следующие изменения: In Windows 10, the provisioning stack contains the following changes:
- Пространство имен протокола— пространство имен протокола было изменено с Windows.WEH.PreStageProv.Chunk на Windows.ProvPlugins.Chunk. Protocol namespace — The protocol namespace has changed from Windows.WEH.PreStageProv.Chunk to Windows.ProvPlugins.Chunk.
- Тип данных метки— тип данных метки был изменен с UTF-8 на двоичные необработанные данные. Tag data type — The tag data type has changed from UTF-8 into binary raw data.
NFC-метка не попадает во второе устройство. The NFC tag doesn’t go in the secondary device. NFC-метку можно передать используя пакет подготовки с одного устройства на другое по связи NFC или путем повторного чтения пакета подготовки из NFC-метки. You can transfer the NFC tag by using a provisioning package from device-to-device using the NFC radio or by re-reading the provisioning package from an NFC tag.
Компоненты NFC-метки NFC tag components
NFC-метки подходят для подготовки небольших пакетов. NFC tags are suitable for very light applications where minimal provisioning is required. Размер NFC-меток, содержащих пакеты подготовки, обычно составляет от 4 КБ до 10 КБ. The size of NFC tags that contain provisioning packages is typically 4 KB to 10 KB.
Чтобы записать NFC-метку, необходимо использовать средство записи NFC Writer или API-интерфейс класса ProximityDevice, чтобы создать собственный специальный инструмент и передать файл пакета подготовки в NFC-метку. To write to an NFC tag, you will need to use an NFC Writer tool, or you can use the ProximityDevice class API to write your own custom tool to transfer your provisioning package file to your NFC tag. Этот инструмент должен опубликовать двоичное сообщение (запись) с блочным типом данных в вашей NFC-метке. The tool must publish a binary message (write) a Chunk data type to your NFC tag.
В следующей таблице приведены сведения, которые нужно знать при выполнении записи в NFC-метку. The following table describes the information that is required when writing to an NFC tag.
Обязательное поле Required field | Описание Description |
---|---|
Type (Тип) Type | Windows.ProvPlugins.Chunk Windows.ProvPlugins.Chunk Принимающее устройство использует эту информацию, чтобы понять сведения, содержащиеся в поле Data (Данные). The receiving device uses this information to understand information in the Data field. |
Data (Данные) Data | Данные метки с небольшим заголовком в необработанном двоичном формате, содержащие блок пакета подготовки для передачи. Tag data with small header in raw binary format that contains a chunk of the provisioning package to be transferred. |
Вспомогательное устройство подготовки с помощью NFC NFC provisioning helper
Вспомогательное устройство подготовки с помощью NFC должно разделить необработанное содержимое пакета на несколько частей и опубликовать их по порядку. The NFC provisioning helper device must split the provisioning package raw content into multiple parts and publish these in order. У каждой части должен быть следующий формат: Each part should follow the following format:
Version (Версия) Version (1 байт) (1 byte) | Leading (Начальный байт) Leading (1 байт) (1 byte) | Order (Порядок) Order (1 байт) (1 byte) | Total (Всего) Total (1 байт) (1 byte) | Полезные данные блока Chunk payload (N байтов) (N bytes) |
Для каждой из частей: For each part: — Версия всегда должна быть 0x00. Version should always be 0x00. — Для первого байта всегда должно быть 0xFF. Leading byte should always be 0xFF. — « Заказ» — это блок сообщения (из всего сообщения), к которому относится эта часть. Order represents which message chunk (out of the whole message) the part belongs to. Порядок начинается с нуля (0). The Order begins with zero (0). — Итого — общее количество фрагментов, которые будут переданы для всего сообщения. Total represents the total number of chunks to be transferred for the whole message. — Полезные данные блока представляет каждую из разделенных частей. Chunk payload represents each of the split parts.
Вспомогательное устройство подготовки с помощью NFC должно опубликовать запись в виде Windows.ProvPlugins.Chunk. The NFC provisioning helper device must publish the record in a type of Windows.ProvPlugins.Chunk.
Пример кода Code example
В примере кода ниже показано, как выполнять запись в NFC-метку. The following example shows how to write to an NFC tag. В этом примере кода предполагается, что метка уже находится в зоне действия устройства записи. This example assumes that the tag is already in range of the writing device.
Компоненты метки устройства с поддержкой NFC NFC-enabled device tag components
Подготовка с исходного устройства с поддержкой NFC позволяет передавать более крупные пакеты подготовки с помощью NFC-метки. Provisioning from an NFC-enabled source device allows for larger provisioning packages than can be transferred using an NFC tag. При выполнении подготовки с устройства с поддержкой NFC рекомендуется, чтобы общий размер файла не превышал 120 КБ. When provisioning from an NFC-enabled device, we recommend that the total file size not exceed 120 KB. Следует учитывать, что чем больше размер файла NFC, тем дольше будет выполняться передача файла подготовки. Be aware that the larger the NFC file is, the longer it will take to transfer the provisioning file. В зависимости от оборудования с поддержкой NFC, которое вы используете, время передачи файла размером 120 КБ файла может составлять от 2,5 секунды до 10 секунд. Depending on your NFC hardware, the transfer time for a 120 KB file will vary between 2.5 seconds and 10 seconds.
Чтобы выполнить подготовку с исходного устройства с поддержкой NFC, используйте API-интерфейс класса ProximityDevice, чтобы создать собственный специальный инструмент, который передаст ваш пакет подготовки блоками на целевое мобильное устройство. To provision from an NFC-enabled source device, use ProximityDevice class API to write your own custom tool that transfers your provisioning package in chunks to your target mobile device. Этот инструмент должен опубликовать двоичные сообщения (передать), то есть сообщение с заголовком, за которым будет следовать одно или несколько блочных сообщений. The tool must publish binary messages (transmit) a Header message, followed by one or more Chunk messages. Заголовок определяет общий объем данных, которые будут переданы на целевое устройство. Блоки должны содержать отформатированные данные подготовки двоичных необработанных данных, как показано в разделе «Компоненты NFC-метки». The Header specifies the total amount of data that will be transferred to the target device; the Chunks must contain binary raw data formatted provisioning data, as shown in the NFC tag components section.
Подробные сведения (и примеры кода) о том, как реализовать метку устройства с поддержкой NFC см. в разделе ConvertToNfcMessageAsync в этом примере универсального приложения NfcProvisioner для Windows на GitHub. For detailed information and code samples on how to implement an NFC-enabled device tag, see ConvertToNfcMessageAsync in this GitHub NfcProvisioner Universal Windows app example. В этом примере приложения показано, как разместить пакет подготовки на главном устройстве, чтобы его можно было передать на принимающее устройство. The sample app shows you how to host the provisioning package on a master device so that you can transfer it to the receiving device.