У меня есть unix-сервер (arch linux) с samba 4.1.12. В общем ресурсе есть файлы в кодировке utf-8 nfc (стандартный utf-8).
Когда я монтирую этот общий ресурс samba в клиент osx (10.9.5), файлы со специальными именами, например File with "quotes"
отображаются искаженными (C7XSWH~V
) на клиенте osx.
Когда я создаю файл со специальными символами на клиенте osx внутри общего ресурса, он правильно отображается в osx, но на сервере unix он отображается со странным символом, например File with quotes
.
Я думаю, это потому, что osx ожидает, что имена файлов будут в utf-8 nfd форма, но файлы являются серверными как utf-8 nfc.
В основном я хочу иметь рабочую общую папку samba, где пользователи из клиентов osx и unix могут получать доступ и хранить файлы, а в именах файлов должны быть разрешены специальные символы. Есть ли способ сделать эту кроссплатформенную?
Как я могу сказать osx, что нужно просто использовать кодировку utf-8 nfc для общего ресурса samba? Как это сделать?
Я уже пробовал такие вещи, как явная установка кодировки в smb.conf на сервере unix, но безуспешно:
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
Это отсутствующая функция в клиенте samba. В самбе 4.2 есть vfs_fruit
модуль для преодоления этих ограничений - см. ветку списка рассылки https://lists.samba.org/archive/samba/2014-De December/187545.html Больше подробностей.
С vfs_fruit
модуль вы можете сделать:
vfs objects = catia fruit streams_xattr
fruit:encoding = native
И samba прозрачно отображает имена файлов для клиентов osx (даже если у нее все еще есть проблемы, например, если файлы заканчиваются пробелом).
Вы пробовали добавить mangled names = no
к smb.conf
?