Montaje de recursos compartidos Unix con un cliente NFS de Windows
Network File System (NFS) es un estándar abierto para distribuir un sistema de archivos a través de una red para acceso multicliente. Diseñado en 1984, NFS ha crecido hasta incluir muchos métodos de autenticación tanto en el nivel compartido (exportación) como en el sistema de archivos, incluida la IP/nombre de host del cliente, auth_sys (autenticación Unix), Kerberos y ACL NFSv4.x.
Esta publicación de blog explica cómo montar un recurso compartido NFS en un cliente Windows.
Cómo funciona NSF con los sistemas operativos Windows
Si bien es probable que esté familiarizado con el acceso a archivos compartidos de red a través del Bloque de mensajes del servidor (SMB) o la implementación de SMB (CIFS) en Windows, NFS todavía prevalece en entornos de producción con servidores Unix.
Desafortunadamente, NFS tradicionalmente no funcionaba bien en entornos que mezclaban Windows con Unix: para permitir el acceso de los clientes Windows a las exportaciones NFS, cada exportación NFS necesitaba un recurso compartido de Samba equivalente (una implementación SMB para Unix).
Sin embargo, esto cambió cuando Microsoft implementó herramientas de servidor y cliente NFS. La documentación NFS de Microsoft enumera la siguiente compatibilidad con el sistema operativo:
| Operating Systems | NFS Server Versions | NFS Client Versions |
| Windows 7, Windows 8.1 Windows 10 | N/A | 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 |
Cómo configurar Windows como cliente NFS
Requisito previo: habilite las funciones necesarias de Windows.
Antes de montar un recurso compartido NFS en un cliente de Windows, debemos habilitar ciertas funciones dentro de Windows para realizar operaciones del cliente NFS. El comando de PowerShell a utilizar depende de su entorno de cliente:
Para Windows 10:
Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestartPara servidor Windows:
Install-WindowsFeature NFS-ClientMonte el recurso compartido NFS (exportar).
Ahora necesitamos montar las exportaciones NFS desde un servidor Unix. Sin embargo, Unix y Windows utilizan mecanismos diferentes para identificar usuarios y grupos: en sistemas operativos similares a Unix, como Linux, los usuarios y grupos se identifican mediante identificadores de usuario (UID) e identificadores de grupo (GID), respectivamente. En Windows, los usuarios y grupos se identifican mediante identificadores de seguridad (SID).
Por lo tanto, para autenticarnos en un servidor Unix que proporciona exportaciones NFS, necesitamos asignar usuarios de Windows a UID y GID de Unix. Con esta asignación UID/GID, el servidor Unix podrá determinar qué usuario creó la solicitud para la exportación NFS.
Aquí hay tres métodos que puede utilizar para realizar la asignación de identidad y montar la exportación NFS.
Método 1 (preferido). Realizar mapeo de identidad en Active Directory (AD).
Si tanto el servidor NFS de Unix como el cliente NFS de Windows están unidos al mismo dominio de Active Directory, entonces podemos manejar la asignación de identidades en Active Directory. Este es el método preferido por motivos de seguridad cuando sea posible.
NOTA: Este método no está disponible si se utiliza el método 2 (a continuación), ya que la presencia de un archivo etcpasswd local tendrá prioridad para la asignación de identidad.
De forma predeterminada, nuestro cliente NFS no buscará asignaciones de identidad en Active Directory. Sin embargo, podemos cambiar eso ejecutando el siguiente comando en una sesión elevada de PowerShell en el cliente NFS:
» Set-NfsMappingStore -EnableADLookup $True -ADDomainName "<your_domain>"Ahora podemos ejecutar el comando Get-NfsMappingStore para verificar la asignación UID/GID del usuario actual de Windows. Como puede ver, ADLookupEnabled está configurado en True y se especifica un dominio para ADDomain.
» Get-NfsMappingStoreUNMServer :
UNMLookupEnabled : False
ADDomain : <your_domain>
ADLookupEnabled : True
LdapServer :
LdapNamingContext :
LdapLookupEnabled : False
PasswdFileLookupEnabled : False
A continuación, debemos configurar nuestra asignación de identidad en Usuarios y equipos de Active Directory. Para ver los atributos uidNumber y gidNumber de cada usuario, asegúrese de tener habilitadas las funciones avanzadas en el menú desplegable Ver:
Luego podrá ver y editar esos campos en el menú Propiedades de un usuario o grupo, en la pestaña Editor de atributos:
Puede resultar engorroso asignar manualmente UID y GID para muchos usuarios de Active Directory. Para automatizar el proceso, puede usar el siguiente comando de PowerShell para establecer los valores de atributos apropiados para cada usuario deseado, usando un archivo CSV con datos UID/GID:
Set-ADUser -identity <UserPrincipalName> -add @{uidNumber="<user_unix_uid>";
gidNumber="<user_unix_gid>"}NOTA: En el comando Set-ADUser, "agregar" debe cambiarse a "reemplazar" si un usuario ya tiene un valor para uidNumber o gidNumber.
Con este enfoque, ahora podemos asignar un recurso compartido NFS en Windows a una letra de unidad disponible a través del símbolo del sistema, y el UID/GID se asignará según los valores de los atributos uidNumber y gidNumber del usuario actual de Active Directory.
» mount \<nfs_server_ip_address>pathtonfsexport Z:La ruta después de la IP del servidor NFS es la ruta local a la exportación NFS en el servidor NFS, y la letra de la unidad es cualquier letra de unidad disponible en el cliente NFS de Windows.
Por supuesto, los derechos Unix otorgados al usuario los hemos asignado para decidir en última instancia qué tipo de acceso tenemos para la exportación, como lectura/escritura o solo lectura.
Método 2. Realice un mapeo de identidad utilizando el archivo local etcpasswd.
Dado que utilizar Active Directory es el método preferido para el mapeo de identidades, no entraremos en detalles sobre las otras dos opciones. Sin embargo, vale la pena señalar brevemente que Windows puede realizar mapeo de identidad local utilizando archivos de grupo y contraseña estilo Unix, ubicados en %SYSTEMROOT%system32driversetc.
Si el archivo passwd está presente y tiene información de asignación de identidad para el usuario actual de Windows, entonces las asignaciones especificadas en los archivos passwd y de grupo se utilizarán para las solicitudes de montaje NFS del cliente en lugar de las asignaciones UID/GID en Active Directory o AnonymousUid/AnonymousGid. La configuración del registro de Windows se describe a continuación.
Al ejecutar el comando Get-NfsMappingStore PowerShell, notará que PasswdFileLookupEnabled es True siempre que este flujo de trabajo esté vigente para el usuario actual de Windows.
Este enfoque utiliza la misma sintaxis de montaje que el enfoque de asignación de identidad de Active Directory anterior:
» mount \<nfs_server_ip_address>pathtonfsexport Z:Método 3. Realice una asignación de identidad utilizando la configuración del registro de Windows AnonymousUid/AnonymousGid.
El método final se considera un enfoque inseguro y no se recomienda. Potencialmente, permite a cualquier usuario local montar las exportaciones NFS de destino con acceso de lectura/escritura, en lugar de asegurar permisos de escritura para usuarios locales específicos de Windows mediante los métodos anteriores.
Para asignar el cliente local de Windows al UID y GID del usuario de Unix propietario de las exportaciones deseadas, ejecute lo siguiente en un PowerShell elevado:
» New-ItemProperty HKLM:SOFTWAREMicrosoftClientForNFSCurrentVersionDefault -Name AnonymousUID -Value <unix_export_owner_uid> -PropertyType "DWord"» New-ItemProperty HKLM:SOFTWAREMicrosoftClientForNFSCurrentVersionDefault -Name AnonymousGID -Value <unix_export_owner_gid> -PropertyType "DWord"Después de agregar estas claves al registro de Windows, debe reiniciar para que surtan efecto.
Luego use el siguiente comando para montar la exportación NFS con acceso de lectura/escritura (asumiendo que la IP del cliente tiene permiso para montar la exportación y que la asignación UID/GID es correcta para cada exportación deseada):
» mount -o anon \<nfs_server_ip_address>pathtonfsexport Z:Preguntas más frecuentes
¿Windows 11 admite clientes NFS?
Sí.
¿Cómo puedo utilizar NFS en Windows?
- Proporcione acceso al mismo recurso compartido de archivos mediante los protocolos SMB y NFS mediante un servidor de archivos NFS de Windows.
- Implemente un sistema operativo que no sea Windows para proporcionar recursos compartidos de archivos NFS accesibles para clientes que no sean Windows mediante el protocolo NFS.
- Para permitir que las aplicaciones se migren de un sistema operativo a otro, almacene datos en recursos compartidos de archivos accesibles mediante los protocolos SMB y NFS.
¿Qué mejoras se incluyen en la versión 4.1 de NFS?
- La infraestructura de transporte de llamada a procedimiento remoto (RPC)/representación de datos externos (XDR) ofrece mejor soporte y escalabilidad.
- Función de multiplexor de puerto RPC
- Cachés y grupos de subprocesos ajustados automáticamente
- Nuevas opciones de autenticación e implementación de privacidad de Kerberos
Para obtener detalles completos, visite la página de Microsoft que describe todas las versiones de NFS.
¿Cómo agrego el servicio de rol Servidor para NFS?
En el Administrador del servidor o en el Centro de administración de Windows, utilice "Agregar funciones" y el "Asistente de funciones".
¿Qué herramientas de administración de línea de comandos de Windows contiene Server for NFS?
- Mount proporciona un montaje NFS en clientes Windows que se asigna a una unidad local
- Nfsadmin administra los ajustes de configuración de los componentes Servidor para NFS y Cliente para NFS.
- Nfsshare configura la configuración de uso compartido de NFS para carpetas que se comparten a través del Servidor para NFS.
- Nfsstat muestra o restablece estadísticas sobre las llamadas recibidas por el servidor para NFS.
- Showmount enumera los sistemas de archivos que el servidor ha exportado para NFS.
Las unidades montadas en NFS se desmontan usando Umount.

