logo

Création de partages Unix à l’aide d’un client NFS Windows

Network File System (NFS) est une norme ouverte qui permet le partage d’un système de fichiers sur un réseau afin de faciliter l’accès multiclient. Conçu en 1984, le protocole NFS s’est développé jusqu’à inclure de nombreuses méthodes d’authentification à la fois au niveau du partage (exportation) et du système de fichiers. Parmi ces méthodes figurent l’adresse IP du client ou le nom d’hôte, l’authentification Unix (auth_sys), le protocole Kerberos ou encore les listes de contrôle d’accès (ACL) NFSv4.x.

Ce billet de blog vous explique comment monter un partage NFS sur un client Windows.

Sélection de contenu connexe :

Comment fonctionne NFS avec les systèmes d’exploitation Windows

Il est probable que vous sachiez accéder à des partages de fichiers réseau à l’aide du protocole SMB (Server Message Block) ou grâce à la mise en œuvre Windows de ce protocole, CIFS (Common Internet File System), mais NFS est toujours largement répandu dans les environnements de production Unix.

Malheureusement, NFS n’a généralement jamais bien fonctionné avec les environnements à la fois sous Windows et Unix : pour activer l’accès client de Windows aux exportations NFS, chacune d’entre elles nécessitait un partage Samba (une mise en œuvre du protocole SMB pour Unix).

Toutefois, cette contrainte n’existe plus depuis que Microsoft a mis en place son client et ses outils serveur pour NFS. La documentation NFS de Microsoft répertorie les systèmes d’exploitation pris en charge. Voici la liste :

Systèmes opérationnels Versions du serveur NFS Versions du client NFS
Windows 7, Windows 8.1 Windows 10 s.o. NFSv2, NFSv3
Windows Server 2008, Windows Server 2008 R2 NFSv2, NFSv3 NFSv2, NFSv3
Windows Server 2012, Windows Server 2012 R2,
Windows Server 2016, Windows Server 2019
NFSv2, NFSv3, NFSv4.1 NFSv2, NFSv3

Comment configurer Windows en tant que client NFS

Prérequis : activer les fonctionnalités Windows nécessaires.

Avant de monter un partage NFS sur un client Windows, vous devez activer au préalable certaines fonctionnalités de Windows qui vous permettront d’effectuer des opérations à partir du client NFS. La commande PowerShell que vous devez exécuter dépend de votre environnement client :

Sous Windows 10 :

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

Sous Windows Server :

Install-WindowsFeature NFS-Client

Monter le partage NFS (exportation).

Nous devons maintenant monter les exportations NFS à partir d’un serveur Unix. Unix et Windows utilisent néanmoins différents processus pour identifier les utilisateurs et les groupes : dans les systèmes d’exploitation de type Unix, par exemple Linux, un utilisateur est identifié par son identificateur d’utilisateur (UID) et un groupe, par son identificateur de groupe (GID). Sous Windows, les utilisateurs et les groupes sont quant à eux identifiés par des identificateurs de sécurité (SID).

En conséquence, pour authentifier les utilisateurs sur un serveur Unix et leur donner des droits d’accès, vous devez mapper les utilisateurs Windows et établir une correspondance avec les identificateurs d’utilisateur et les identificateurs de groupe Unix. Grâce à ce mappage UID/GID, le serveur Unix est en mesure de déterminer l’origine de la demande d’exportation NFS.

Voici trois méthodes pour effectuer le mappage d’identité et pour monter l’exportation NFS.

Méthode no 1 (privilégiée). Effectuer un mappage d’identité dans l’Active Directory (AD).

Si le serveur NFS Unix et le client NFS Windows appartiennent tous les deux au même domaine Active Directory, il est alors possible de gérer le mappage d’identité dans l’Active Directory. Pour des raisons de sécurité, il s’agit de la méthode à privilégier si vous le pouvez.

REMARQUE :

Cette méthode ne peut pas être appliquée si un fichier local \etc\passwd existe, car ce dernier sera utilisé en priorité pour le mappage d’identité (voir méthode no 2 ci-dessous).

Par défaut, notre client NFS ne recherche pas de mappage d’identité dans l’Active Directory. Il est néanmoins possible de modifier ce comportement en exécutant la commande suivante dans une session PowerShell avec élévation de privilèges dans le client NFS :

» Set-NfsMappingStore -EnableADLookup $True -ADDomainName "<your_domain>"

Nous pouvons maintenant exécuter la commande Get-NfsMappingStore pour vérifier le mappage UID/GID des utilisateurs Windows actifs. Vous pouvez observer que l’attribut ADLookupEnabled prend la valeur True et que le nom de domaine est défini dans l’attribut ADDomain.

» Get-NfsMappingStoreUNMServer
UNMServer               :

UNMLookupEnabled        : False

ADDomain                : <your_domain>

ADLookupEnabled         : True

LdapServer              :

LdapNamingContext       :

LdapLookupEnabled       : False

PasswdFileLookupEnabled : False

Il nous faut ensuite configurer le mappage d’identité pour les utilisateurs et les ordinateurs de l’Active Directory. Pour afficher les attributs uidNumber et gidNumber de chaque utilisateur, veillez à sélectionner Fonctionnalités avancées dans le menu déroulant Affichage :

Vous serez alors en mesure d’afficher et de modifier les champs suivants dans le menu des propriétés d’un utilisateur ou d’un groupe dans l’onglet Éditeur d’attributs :

Mapper manuellement les UID et GID d’un grand nombre d’utilisateurs de l’Active Directory peut s’avérer fastidieux. Afin d’automatiser le processus, vous pouvez exécuter la commande PowerShell suivante pour définir les valeurs d’attribut correctes pour chaque utilisateur, en utilisant un fichier CSV qui inclut les données UID/GID :

Set-ADUser -identity <UserPrincipalName> -add @{uidNumber="<user_unix_uid>";

gidNumber="<user_unix_gid>"}

REMARQUE :

Dans la commande Set-ADUser, « add » doit être remplacé par « replace » si la valeur des attributs uidNumber ou gidNumber existe déjà pour un utilisateur.

Grâce à cette méthode, il nous est maintenant possible de mapper un partage NFS dans Windows et de lui attribuer une lettre de lecteur disponible à l’aide d’une invite de commandes. Les identificateurs d’utilisateur et de groupe seront mappés en fonction des valeurs d’attribut uidNumber et gidNumber des utilisateurs actifs de l’Active Directory.

» mount \\<nfs_server_ip_address>\path\to\nfs\export Z:

Le chemin d’accès après l’adresse IP du serveur NFS correspond au chemin d’accès local de l’exportation NFS sur le serveur NFS. La lettre de lecteur peut être n’importe quelle lettre disponible sur le client NFS Windows.

Bien entendu, les droits d’accès à l’exportation NFS, par exemple en lecture et en écriture ou en lecture seule, dépendent essentiellement des droits Unix accordés à l’utilisateur que nous avons mappé.

Méthode no 2. Effectuer un mappage d’identité à l’aide du fichier local \etc\passwd.

L’utilisation de l’Active Directory constitue la méthode privilégiée pour effectuer un mappage d’identité : nous n’entrerons donc pas dans le détail en ce qui concerne les deux autres méthodes. Il est toutefois intéressant de préciser au passage que Windows peut effectuer un mappage d’identité local grâce aux fichiers de type Unix passwd et group, qui se trouvent ici :

%SYSTEMROOT%\system32\drivers\etc.

Si ces fichiers existent et incluent des informations de mappage d’identité sur l’utilisateur Windows actif, les mappages qui y sont spécifiés seront alors utilisés pour les demandes de montage NFS du client plutôt que les mappages UID/GID dans l’Active Directory ou les paramètres du registre Windows AnonymousUid/AnonymousGid que nous passons brièvement en revue ci-dessous.

Quand vous exécutez la commande PowerShell Get-NfsMappingStore, vous pouvez observer que l’attribut PasswdFileLookupEnabled prend la valeur True lorsque vous appliquez ce flux de travail pour l’utilisateur Windows actif.

La syntaxe de montage utilisée dans cette approche est identique à celle du mappage d’identité dans l’Active Directory :

» mount \\<nfs_server_ip_address>\path\to\nfs\export Z:

Méthode no 3. Effectuer un mappage d’identité à l’aide des paramètres du registre Windows AnonymousUid/AnonymousGid

Cette dernière méthode est jugée risquée et n’est pas recommandée. Elle permet virtuellement à n’importe quel utilisateur local de monter une ou plusieurs exportations NFS sur un système cible et de disposer de droits d’accès en lecture et en écriture, plutôt que d’accorder des autorisations d’écriture à des utilisateurs locaux Windows spécifiques grâce aux méthodes précédentes.

Pour mapper le client Windows local vers les identificateurs UID et GID d’un utilisateur Unix propriétaire d’une ou plusieurs exportations, exécutez la commande suivante dans une session PowerShell avec élévation de privilèges :

» New-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousUID -Value <unix_export_owner_uid> -PropertyType "DWord"» New-ItemProperty HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default -Name AnonymousGID -Value <unix_export_owner_gid> -PropertyType "DWord"

Une fois que vous avez ajouté ces clés au registre Windows, redémarrez pour appliquer vos modifications.

Exécutez ensuite la commande suivante pour monter l’exportation NFS avec des droits d’accès en lecture et en écriture (en supposant que l’adresse IP du client dispose des autorisations nécessaires pour monter l’exportation et que le mappage UID/GID est correct pour chaque exportation) :

» mount -o anon \\<nfs_server_ip_address>\path\to\nfs\export Z:

FAQ

Windows 11 prend-il en charge les clients NFS ?

Oui.

Comment puis-je utiliser NFS sous Windows ?

  • Vous pouvez fournir un accès au même partage de fichiers en utilisant à la fois les protocoles SMB et NFS à l’aide d’un serveur de fichiers NFS Windows.
  • Vous pouvez déployer un système d’exploitation différent de Windows pour fournir un partage de fichiers NFS accessible aux clients autres que Windows grâce au protocole NFS.
  • Vous pouvez permettre la migration d’applications d’un système d’exploitation à un autre, stocker des données sur des partages de fichiers accessibles en utilisant à la fois les protocoles SMB et NFS.

Quelles sont les améliorations de la version 4.1 du protocole NFS ?

  • L’infrastructure de transport RPC/XDR (appel de procédure distante/représentation de données externes) offre une prise en charge et une capacité d’évolution plus grandes.
  • Fonctionnalité de multiplexeur de ports RPC
  • Fonctionnalités de caches et de pools de threads paramétrés automatiquement
  • Nouvelles options d’implémentation et d’authentification de confidentialité Kerberos

Pour plus d’informations, consultez la page Microsoft qui offre une vue d’ensemble des différentes versions du système de fichiers NFS.

Comment ajouter le service de rôle Serveur pour NFS ?

Dans le gestionnaire de serveur ou dans le centre d’administration Windows, utilisez l’Assistant Ajout de rôles et de fonctionnalités.

Quels outils d’administration de lignes de commande Windows offrent le service Serveur pour NFS ?

  • Le montage permet de monter un partage NFS et de le mapper à une lettre de lecteur local sur l’ordinateur client Windows.
  • Nfsadmin permet de gérer les paramètres de configuration des composants Serveur pour NFS et Client pour NFS.
  • Nfsshare configure les paramètres de partage NFS pour les dossiers partagés à l’aide de Server pour NFS.
  • Nfsstat affiche ou réinitialise les statistiques des appels reçus par le serveur pour NFS.
  • Showmount affiche les systèmes de fichiers montés exportés par le Serveur pour NFS.
  • Umount supprime les lecteurs montés sur NFS.