Windows

啟用區分大小寫的名稱後,Samba 是否可以在 Windows 上正常工作?

  • June 20, 2019

我希望 Windows 客戶端可以訪問 *nix Samba 共享。

Samba 具有啟用或禁用文件名區分大小寫的選項。通常對於 Windows 訪問,這是禁用的,因此 fred==FRED=fReD。

然而,這導致了一個主要問題,AFAICT:

  • 在 unix 上,您創建兩個文件夾,分別稱為“RODDY”和“roddy”
  • 在 Windows 上,您會看到這兩個文件夾,但是…
  • 當您從 Windows 刪除/重命名/打開一個時,您最終可能會刪除/重命名/等其中任何一個。 你沒有辦法知道是哪一個!.

所以,我的問題是,如果區分大小寫的標誌設置為“ON”,Samba 在 Windows 上的行為如何?使用者是否仍然可以看到這兩個文件夾,並且文件操作以一致的方式工作?

應該沒問題。Windows 資源管理器在正確顯示文件名大小寫方面做得很好。我在我的 smb.conf 中使用它來確保我在 Explorer 中輸入的內容是 Samba 使用的內容(我設置了所有這些 per-share):

case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes

我進行了快速測試(後端為 Samba 3.0.24,前端為 WinXP)。文件是通過 SSH 會話在 samba 伺服器上創建的。

$ cd /some/samba/share/path
$ mkdir test
$ cd test

$ mkdir test1 TEST1
$ touch test1/foo TEST1/bar

在此之後,我瀏覽了我的映射驅動器到測試目錄。我可以看到“test1”和“TEST1”目錄。我打開“test1”並看到了“foo”文件。我打開“TEST1”並看到了“bar”文件。到目前為止,一切都很好。

然後我回到 test 目錄,在 Explorer 視窗中,將 TEST1 重命名為 TEST2。Windows 稍微嚇了一跳——它重命名了文件夾,然後將兩個文件夾顯示為 TEST2——似乎已經重命名了這兩個文件夾。但是,在 SSH 終端中,我檢查了:

$ ls
test1 TEST2

所以 Windows 重命名了文件,Samba 正確地得到了文件名。當我在資源管理器視窗中按 F5 以刷新文件夾內容時,顯示屏更改為顯示正確的文件夾名稱。

警告: Linux 文件系統允許一些 Windows 不允許的字元(如“:”)。 Samba 有一個“名稱修改”選項,可以將這些文件名轉換為 Windows 喜歡的名稱。例如,如果我在我的 SSH 視窗中創建一個名為“FA:23”的文件,Samba 會將名稱更改為“F7T4H0~F”,這就是資源管理器視窗中顯示的內容。

引用自:https://serverfault.com/questions/70570