将 unix samba 4 共享挂载到 osx 客户端,而不会损坏文件名

Mar*_*kus 5 mac-osx charset utf-8 samba4

我有一个带有 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 nf d形式,但这些文件作为 utf-8 nf c服务器。

基本上我想要一个工作 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*kus 5

这是/曾经是 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
Run Code Online (Sandbox Code Playgroud)

并且 samba 透明地映射 osx 客户端的文件名(即使文件以空格结尾,它仍然存在一些问题)。