Samba

samba 如何顯示名稱中帶有冒號的文件?

  • November 30, 2020

當文件包含冒號時,Samba 無法正確顯示文件。

原始文件名:test:file.txt

Windows下的顯示名稱:T8S6CH~R.TXT

我該如何解決?

資訊:

Linux:SLES 11 SP 3

桑巴:Version 3.6.3-0.33.39.1-3128-SUSE-CODE11-x86_64

出於某種原因,Samba 開始破壞包含冒號的文件名。到目前為止,我在網際網路上找不到任何關於這種行為的資訊。

解決方案非常簡單。添加部分並重新啟動 Samba 解決了該問題mangled names = no[global]``/etc/samba/smb.conf

Sambamangled names選項的問題在於這兩種設置都不理想。您可以擁有未損壞但不能以任何方式訪問的名稱,因為它們包含非法字元,或者名稱被損壞為 DOS 8.3 格式並因此接近不可讀。

幸運的是(現在)有一個稱為 VFS 模組catia,它將提供自定義字元映射。特別是可以映射出在 Windows 文件名中被認為是非法的字元。

在該[global]部分中放置這些行:

   # Mapping illegal characters, where enabled with "vfs objects = catia"
   mangled names = no
   catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6

在每個[share_name]部分中添加下一行(如果您已經有vfs objects一行,只需附加catia到列表中):

   vfs objects = catia

像往常一樣,如果它適用於您的所有共享,則可以放置此基於共享的設置,[global]而不是每個單獨的共享定義。

在我的基於 Debian 的系統上,這個 VFS 對像模組是作為標準包的一部分安裝的。

此設置映射的文件名的一個範例是2017-12-24 12:23.txt. 使用mangled names = yes將此文件顯示為2BB0Y9~4.TXT. 改為使用vfs objects = catia此文件名顯示為2017-12-24 12÷23.txt. 它並不完美,但非常好。最重要的是,我可以從 Windows 應用程序訪問它。

引用自:https://unix.stackexchange.com/questions/299130