將 Linux 使用者/群組對應到 Windows 2019 NFS 共享

將 Linux 使用者/群組對應到 Windows 2019 NFS 共享

我在同一網路上有一台 Windows Server 2019 電腦和一台 CentOS 8 電腦。 CentOS 伺服器託管一個使用 Windows 電腦中的檔案的 Web 應用程式。

為了讀取這些文件,我在 Windows 端設置了 Samba 共享,並透過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?我以為我映射980CentOsUser用戶了?我以為我映射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

相關內容