samba 如何顯示名稱中帶有冒號的文件?
當文件包含冒號時,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
Samba
mangled 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 應用程序訪問它。