
我在同一網路上有一台 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-420
和S-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