我有一台安装了 samba 4.1.12 的 unix 服务器 (arch linux)。共享中含有采用 utf-8 nfc 编码 (标准 utf-8) 的文件。
当我将此 samba 共享挂载到 osx 客户端(10.9.5)时,具有特殊名称的文件(例如)在 osx 客户端上File with "quotes"
显示为混乱( )。C7XSWH~V
当我在共享内的 osx 客户端上创建一个带有特殊字符的文件时,它在 osx 中正确显示,但在 unix 服务器上它显示为一个奇怪的符号,如File with quotes
。
我认为这是因为 osx 要求文件名采用 utf-8 nfd表单,但文件服务器为 utf-8 nfC。
基本上,我希望有一个可用的 Samba 共享,以便来自 osx 和 unix 客户端的用户可以访问和存储文件,并且文件名中应允许使用特殊字符。有没有办法跨平台实现这一点?
我如何告诉 osx 仅对 samba 共享使用 utf-8 nfc 编码?有办法吗?
我已经尝试过诸如在 unix 服务器上的 smb.conf 中明确设置编码之类的操作,但没有成功:
unix charset = utf-8
dos charset = utf-8
# --> error in log:
# invalid DOS charset: 'dos charset' must not be UTF8, using (default value) CP850 instead
# or
dos charset = utf-8-mac
# --> error in log:
# dos charset 'utf-8-mac' unavailable - using ASCII
答案1
这是/曾经是 Samba 客户端中缺少的功能。Samba 4.2 中有一个vfs_fruit
模块可以克服此限制 - 请参阅邮件列表主题https://lists.samba.org/archive/samba/2014-December/187545.html更多细节。
利用该vfs_fruit
模块您可以执行以下操作:
vfs objects = catia fruit streams_xattr
fruit:encoding = native
并且 samba 透明地映射 osx 客户端的文件名(即使文件以空格结尾,仍然存在一些问题)。
答案2
您尝试过添加mangled names = no
吗smb.conf
?