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

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

答案1

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 应用程序访问它。

答案2

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

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

答案3

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

尽管如此,我还是有没问题与这些字符使用我的苹果系统Catalina 正在访问我的 FreeNAS-11.3-U1 和 SMB/Samba 设置。我不确定为什么此设置不是默认设置,但您必须按照以下步骤才能使其在 MacOS 上完美运行。

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

  1. 选择“高级模式”并勾选两者卡蒂亚水果在“VFS对象”中
  2. 设置辅助参数为fruit:encoding = native

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

答案4

对于希望挂载 Linux 上托管的 Samba 卷且字符和文件名不混乱的 Mac 用户:

我的一个片段/etc/samba/smb.conf

[sharename]
path = /path/to/share
browsable = yes
writable = yes
valid users = nick
create mask = 644
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:encoding = native

我必须在上面的配置中添加最后 3 行

相关内容