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


13

当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

Answers:


13

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

在基于Debian的系统上,此VFS对象模块作为标准软件包的一部分安装。

此设置映射的文件名的一个示例是2017-12-24 12:23.txt。使用mangled names = yes将此文件显示为2BB0Y9~4.TXT。使用vfs objects = catia代替时,此文件名显示为2017-12-24 12÷23.txt。这不是完美的,但还不错。最重要的是,我可以从Windows应用程序访问它。


1
有关其他看起来像ASCII冒号的字符,请参见⁚::꞉。
斯特凡Chazelas

@StéphaneChazelas也请随时向Samba开发团队提出建议。我只是拿了他们的建议清单。
roaima

当我与Nautilus共享文件夹时,该文件夹显然不会显示在/etc/samba/smb.conf中。在这种情况下,我如何应用您的解决方案?
汉斯·德拉贡

太好了,谢谢。
威尔

5

由于某种原因,Samba开始处理包含冒号的文件名。到目前为止,我在Internet上找不到任何有关此行为的信息。

解决方案非常简单。mangled names = no在该[global]部分添加/etc/samba/smb.conf并重新启动Samba可以解决此问题。


很高兴知道!+1
Luciano Andress Martini

4
该解决方案是不完整的。不显示带有非法Windows字符(例如“:”)的文件。请参阅roaima的解决方案。
汉斯·德拉贡

1

特殊字符问号?\ <> *等在Windows文件名中是非法的,我始终避免使用它们。

不过,使用macOS Catalina访问FreeNAS-11.3-U1和SMB / Samba设置时,这些字符没有问题。我不确定为什么默认情况下没有此设置,但是您必须按照以下步骤操作才能使其在MacOS上完美运行。

在FreeNAS webUI中,转到“共享”>“ SMB”>“编辑”

  1. 选择“高级模式”并选中“ VFS对象”中的catia水果
  2. 将辅助参数设置为 fruit:encoding = native

然后转到服务并重新启动SMB

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.