将 Linux 用户/组映射到 Windows 2019 NFS 共享

将 Linux 用户/组映射到 Windows 2019 NFS 共享

我在同一个网络上有一台 Windows Server 2019 计算机和一台 CentOS 8 计算机。CentOS 服务器托管一个使用 Windows 计算机文件的 Web 应用。

为了读取这些文件,我在 Windows 端设置了一个 Samba 共享,并通过 将其安装在 CentOS 端mount -t cifs //myserver/share /media/windows

这很有效,但我注意到一些问题。有时尝试从此 Samba 共享访问文件时,它只是停留在那里。卸载并重新安装似乎没有帮助,因为问题会再次发生。

我决定尝试使用 NFS 而不是 Samba 在 Windows 2019 和 CentOS 之间共享文件。设置相同的文件夹后,改为使用 NFS 共享,然后mount -t nfs myserver:/share /media/windows我就可以访问会导致 Samba 挂起的文件。

我遇到的问题是,当我从 CentOS 端在 NFS 共享中创建新文件时,Windows 端的权限错误,Windows 服务器上的用户无法访问这些文件。

我研究了这个问题并尝试设置 NFS 用户映射,但我认为我做得不对。

使用 PowerShell,我运行:

Install-NfsMappingStore -InstanceName "NFSMappingStore" -LdapPort 10389

并看到:

已在服务器 MYSERVER 上成功创建名为 NFSMappingStore 的 ADLDS 实例,该实例在端口 10389 上运行,分区为 CN=nfs,DC=nfs。

然后我跑了:

Set-NfsMappingStore -EnableLdapLookup $true -LdapNamingContext "CN=nfs,DC=nfs"
    -LdapServer localhost:10389

看到这个方法有效,我便尝试添加一个用户:

New-NfsMappedIdentity -MappingStore LDAP -Server localhost:10389
    -UserIdentifier 980 -GroupIdentifier 1001
    -UserName CentOsUser -PrimaryGroup "Domain Users"

这似乎工作正常,所以回到 CentOS 端,我CentOsUser通过以下方式以用户身份挂载了 NFS 共享:

sudo -u CentOsUser -g CentOsGroup mount -t nfs myserver:/share /media/windows

这有效,我能够创建和写入文件。但在 Windows 端,我看到(新创建的)文件的所有者实际上是S-1-5-88-1-980而不是CentOsUser

我还看到了S-1-5-88-2-1001以及S-1-5-88-3-420S-1-5-88-4

为什么会显示S-1-5-88-1-980?我以为我映射980到了CentOsUser用户?我还以为我映射1001到了Domain Users组,那么为什么会显示S-1-5-88-2-1001

答案1

我遇到了同样的问题,并且已经为此奋斗了很长时间......

  • 现在我将 Linux 服务器与 AD 集成。
  • 从 Windows 管理所有文件和目录级别权限
  • 从 Windows NFS 共享访问文件的应用程序用户是经过 AD 身份验证的用户。

上述程序对我来说仍然有效。

答案2

我发现最好和最简单的解决方案是https://github.com/billziss-gh/sshfs-win,连接的服务器显示为功能齐全的网络驱动器

编辑:在 Linux 上挂载 NTFS 共享

mkdir /mnt/win1
mount -t cifs //10.10.1.100/share -o username=myUser,password=myPassword /mnt/win1

相关内容