samba 如何显示名称中带有冒号的文件?

Pet*_*RGA 16 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

roa*_*ima 17

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
Run Code Online (Sandbox Code Playgroud)

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

    vfs objects = catia
Run Code Online (Sandbox Code Playgroud)

像往常一样,如果它要应用于您的所有共享,则可以放置此基于共享的设置[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 应用程序访问它。

  • 有关其他看起来像 ASCII 冒号的字符,请参阅 ⁚ ∶ ׃ ꞉。 (2认同)
  • 这是我想出的另一张地图,它使用了通用标点符号和数学运算符平面中的更多字符: `0x22:0x201f,0x2a:0x2217,0x2f:0x2215,0x3a:0x2236,0x3c:0x2039,0x3e:0x203a,0x3f:0xbf ,0x5c:0x2216,0x7c:0x2223` (2认同)

Pet*_*RGA 5

出于某种原因,Samba 开始修改包含冒号的文件名。到目前为止,我在互联网上找不到关于这种行为的任何信息。

解决方法很简单。mangled names = no在该[global]部分中添加/etc/samba/smb.conf并重新启动 Samba 修复了该问题。

  • 此解决方案不完整。不显示带有非法 Windows 字符(如“:”)的文件。请参阅 roaima 的解决方案。 (4认同)