当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 Windows NFS 客户端挂载 Unix 共享

作者:精品下载站 日期:2024-12-14 06:09:47 浏览:14 分类:玩电脑

使用 Windows NFS 客户端挂载 Unix 共享


网络文件系统 (NFS) 是一种开放标准,用于跨网络分发文件系统以供多客户端访问。 NFS 设计于 1984 年,现已发展到在共享(导出)和文件系统级别包含许多身份验证方法,包括客户端 IP/主机名、auth_sys(Unix 身份验证)、Kerberos 和 NFSv4.x ACL。

这篇博文介绍了如何在 Windows 客户端上挂载 NFS 共享。

NSF 如何与 Windows 操作系统配合使用

虽然您可能熟悉通过服务器消息块 (SMB) 或 SMB (CIFS) 的 Windows 实现来访问网络文件共享,但 NFS 在使用 Unix 服务器的生产环境中仍然很流行。

不幸的是,NFS 传统上不能很好地适应 Windows 和 Unix 混合的环境:为了使 Windows 客户端能够访问 NFS 导出,每个 NFS 导出都需要一个 Samba 共享等效项(UNIX 的 SMB 实现)。

然而,当 Microsoft 实现 NFS 客户端和服务器工具时,情况发生了变化。 Microsoft 的 NFS 文档列出了以下操作系统支持:

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

如何将 Windows 配置为 NFS 客户端

先决条件:启用必要的 Windows 功能。

在 Windows 客户端上挂载 NFS 共享之前,我们需要启用 Windows 中的某些功能来执行 NFS 客户端操作。要使用的 PowerShell 命令取决于您的客户端环境:

对于 Windows 10:

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

对于 Windows 服务器:

Install-WindowsFeature NFS-Client

挂载 NFS 共享(导出)。

现在我们需要从 Unix 服务器挂载 NFS 导出。然而,Unix 和 Windows 使用不同的机制来标识用户和组:在 Linux 等类 Unix 操作系统中,用户和组分别通过用户标识符 (UID) 和组标识符 (GID) 来标识。在 Windows 中,用户和组是使用安全标识符 (SID) 来标识的。

因此,为了对提供 NFS 导出的 Unix 服务器进行身份验证,我们需要将 Windows 用户映射到 Unix UID 和 GID。通过此 UID/GID 映射,Unix 服务器将能够确定哪个用户创建了 NFS 导出请求。

您可以使用以下三种方法来执行身份映射和挂载 NFS 导出。

方法 1(首选)。在 Active Directory (AD) 中执行身份映射。

如果 Unix NFS 服务器和 Windows NFS 客户端都加入同一个 Active Directory 域,那么我们就可以在 Active Directory 中处理身份映射。如果可能的话,这是出于安全目的的首选方法。

注意:如果使用方法 2(如下),则此方法不可用,因为本地 etcpasswd 文件的存在将优先进行身份映射。

默认情况下,我们的 NFS 客户端不会在 Active Directory 中查找身份映射。但是,我们可以通过在 NFS 客户端上提升的 PowerShell 会话中运行以下命令来更改这一点:

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

现在我们可以运行 Get-NfsMappingStore 命令来检查当前 Windows 用户的 UID/GID 映射。如您所见,ADLookupEnabled 设置为 True,并为 ADDomain 指定了域。

» Get-NfsMappingStore
UNMServer :

UNMLookupEnabled : False

ADDomain : <your_domain>

ADLookupEnabled : True

LdapServer :

LdapNamingContext :

LdapLookupEnabled : False

PasswdFileLookupEnabled : False

接下来,我们需要在 Active Directory 用户和计算机中配置身份映射。要查看每个用户的 uidNumber 和 gidNumber 属性,请确保您在“视图”下拉列表中启用了“高级功能”:

[玩转系统] 使用 Windows NFS 客户端挂载 Unix 共享

然后,您将能够在用户或组的“属性编辑器”选项卡上的“属性”菜单中查看和编辑这些字段:

[玩转系统] 使用 Windows NFS 客户端挂载 Unix 共享

为许多 Active Directory 用户手动映射 UID 和 GID 可能很麻烦。要自动执行此过程,您可以使用以下 PowerShell 命令,使用包含 UID/GID 数据的 CSV 文件为每个所需用户设置适当的属性值:

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

gidNumber="<user_unix_gid>"}

注意: 在 Set-ADUser 命令中,如果用户已经具有 uidNumber 或 gidNumber 值,则应将“add”更改为“replace”。

使用这种方法,我们现在可以通过命令提示符将 Windows 中的 NFS 共享映射到可用的驱动器号,并且 UID/GID 将根据当前 Active Directory 用户的 uidNumber 和 gidNumber 属性值进行映射。

» mount \<nfs_server_ip_address>pathtonfsexport Z:

NFS 服务器 IP 后面的路径是 NFS 服务器上 NFS 导出的本地路径,驱动器号是 Windows NFS 客户端上的任何可用驱动器号。

当然,授予我们映射到的用户的 Unix 权限最终决定我们对导出拥有何种访问权限,例如读/写或只读。

方法 2. 使用本地 etcpasswd 文件执行身份映射。

由于使用 Active Directory 是身份映射的首选方法,因此我们不会详细介绍其他两个选项。然而,值得简要说明的是,Windows 可以使用 Unix 风格的密码和组文件(位于 %SYSTEMROOT%system32driversetc 中)执行本地身份映射。

如果 passwd 文件存在并且具有当前 Windows 用户的身份映射信息,则 passwd 和组文件中指定的映射将用于客户端的 NFS 挂载请求,而不是 Active Directory 或 AnonymousUid/AnonymousGid 中的 UID/GID 映射Windows 注册表设置概述如下。

运行 Get-NfsMappingStore PowerShell 命令时,只要此工作流对当前 Windows 用户有效,您就会注意到 PasswdFileLookupEnabled 为 True。

此方法使用与上面的 Active Directory 身份映射方法相同的安装语法:

» mount \<nfs_server_ip_address>pathtonfsexport Z:

方法 3. 使用 AnonymousUid/AnonymousGid Windows 注册表设置执行身份映射。

最后一种方法被认为是不安全的方法,不推荐。它可能允许任何本地用户以读/写访问权限挂载目标 NFS 导出,而不是通过上述方法保护特定本地 Windows 用户的写入权限。

要将本地 Windows 客户端映射到拥有所需导出的 Unix 用户的 UID 和 GID,请在提升的 PowerShell 中运行以下命令:

» 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"

将这些项添加到 Windows 注册表后,您需要重新启动才能使它们生效。

然后使用以下命令以读/写访问权限挂载 NFS 导出(假设客户端的 IP 有权挂载导出,并且每个所需导出的 UID/GID 映射都是正确的):

» mount -o anon \<nfs_server_ip_address>pathtonfsexport Z:

常问问题

Windows 11 支持 NFS 客户端吗?

是的。

如何在 Windows 中使用 NFS

  • 通过使用 Windows NFS 文件服务器,使用 SMB 和 NFS 协议提供对同一文件共享的访问。
  • 部署非 Windows 操作系统以提供可供非 Windows 客户端使用 NFS 协议访问的 NFS 文件共享。
  • 为了使应用程序能够从一种操作系统迁移到另一种操作系统,请将数据存储在可使用 SMB 和 NFS 协议访问的文件共享上。

NFS 4.1 版包含哪些改进?

  • 远程过程调用 (RPC)/外部数据表示 (XDR) 传输基础设施提供更好的支持并提供更好的可扩展性
  • RPC 端口多路复用器功能
  • 自动调整的缓存和线程池
  • 新的 Kerberos 隐私实施和身份验证选项

有关完整详细信息,请访问描述所有 NFS 版本的 Microsoft 页面。

如何添加 NFS 服务器角色服务?

在服务器管理器或 Windows Admin Center 中,使用“添加角色”和“功能向导”。

NFS 服务器包含哪些 Windows 命令行管理工具?

  • 装载 在 Windows 客户端上提供映射到本地驱动器的 NFS 装载
  • Nfsadmin 管理 NFS 服务器和 NFS 客户端组件的配置设置。
  • Nfsshare 为通过 NFS 服务器共享的文件夹设置 NFS 共享设置。
  • Nfsstat 显示或重置 NFS 服务器收到的呼叫的统计信息。
  • Showmount 列出了 NFS 服务器导出的文件系统。

使用Umount卸载NFS安装的驱动器。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯