Людина, що сприймає людину, називає Самба mangling


11

Більшість наших комп’ютерів працює у Ubuntu, але два з них подвійно завантажуються у Windows, і коли у нас є гості, вони зазвичай також запускають комп'ютери Windows. Таким чином, крім використання NFS, наш файловий сервер (сервер Ubuntu) також працює Samba.

А оскільки ми використовуємо Ubuntu здебільшого, ми любимо скористатися його перевагами перед Windows, такими як можливість використання символів \:*?"<>|у назві файлу. Проблема, звичайно, полягає в тому, що Windows не приймає цих символів у іменах файлів, і тому Samba повинен перевести ім'я файлу в щось більш прийнятне. Однак, як це робиться, я вважаю неприємним.

Наприклад, ім'я файлу Episode 182 - Exorcist 2: The Heretic.mp4перетворюється E4Q82R~Y.MP4. Це жахлива «корекція». Чи є спосіб зробити так, щоб Самба маніпулювати трохи привітніше до людей? Чи можна "виправити" це щось на кшталт Episode 182 - Exorcist 2_ The Heretic.mp4того, де незаконні символи просто замінені?


1
Ознайомтеся з описом цього виправлення у списку розсилки Samba . Описаний метод працює з нестандартними Samba 4.1.4-Debian.
mpy

@mpy Я спробував це, але це все ще не працює для мене, коли я копіюю файли з незаконними символами Windows на свою частку samba. Він працює лише для перетворення речей, які були б у порядку (наприклад, простір, перетворений у символ), але не для речей, які не працювали (як-от:: "перетворені на інший символ"). Якісь покажчики?
pd12

Відповіді:


11

mangled map тепер застаріла і більше не працюватиме в нових версіях Samba.

Ви можете використовувати vfs_catia для вирішення проблеми. Додайте наступні рядки до smb.conf:

vfs objects = catia
catia:mappings = 0x003a:0x2236,0x003f:0x0294,0x002a:0x2217,0x003c:0x276e,0x003e:0x276f,0x0022:0x02ba,0x007c:0x2223,0x005c:0x29f9

Картографування задається за допомогою 0x префіксованих шістнадцяткових кодів символів, розділених двокрапкою. Надане відображення дозволить перевпорядкувати незаконні символи, щоб унікодувати lookalikes, які навряд чи будуть використані жодною мовою.

:? * <> "| \
∶ ʔ ∗ ❮ ❯ ʺ ∣ ⧹

Код можна поставити під [global]або в окремому [share]розділі. Поміщення його [global]може вплинути на продуктивність.

Зауважте, що будь-який символ, який ви картаєте, не може використовуватися у файлових іменах на сервері, інакше вони будуть недоступними.

Приклад: Клієнт Windows, що отримує доступ до файлу, названого file❮name.txtна сервері, запитає file<name.txtвід сервера через відображення, в результаті чого файл не знайде помилку.


Я спробував це, але це все ще не працює для мене, коли я копіюю файли з незаконними символами Windows на свою частку samba. Він працює лише для перетворення речей, які були б у порядку (наприклад, простір, перетворений у символ), але не для речей, які не працювали (як-от:: "перетворені на інший символ"). Якісь покажчики?
pd12

2
Це чудово працює! Варто зазначити, що ви не можете зіставити все на один і той же символ, і у вашому прикладі все, що фактично має в ньому підкреслення, більше не буде доступним. Натомість я використав такі відображення:, 0x3a:0x7e 0x3f:0x5eтак :стає ~і ?стає ^.
Джеффрі

2

У цьому посиланні ви можете ознайомитись з варіантами керування. Я думаю, спочатку слід відключити опцію:

mangled names

Після цього я думаю, що імена повинні виглядати краще ...

Для заміни товстої кишки, наприклад, використовуйте цей рядок:

mangled map =(: _)

Ви можете додати більше таких правил заміни:

mangled map =(: _) (foo bar)

(також замінює будь-яку появу Foo барною смугою)


Вони зараз виглядають краще. Насправді, коли я встановив "маніпульовані імена" на "ні", імена файлів відображаються в Windows повністю без змін. Хоча це, звичайно, виглядає краще, але це також робить програми Windows не в змозі відкрити файли. Якщо я спробую відкрити файл tes:t.txtу Блокноті, наприклад, мені сказано "Неможливо знайти файл [...] \ tes: t.txt". Те саме стосується інших "незаконних" файлів у відповідних програмах.
Олексій

відредагував мою відповідь!
Майкл К

mangled mapбуло видалено з Самба. З того, що я можу сказати, трохи озирнувшись, це було знято років тому. Ось що log.smbdговорить мій файл, якщо я спробую ним скористатися:Ignoring unknown parameter "mangled map"
Алекс

Ви праві ... застарілі. Це не спрацює. Це не так просто - складне ім'я файлу - запобігання наявності двох файлів з ім'ям dame. Файл foo: .txt та foo_.txt може існувати, і тоді ваше перейменування не вдасться. Таким чином, найкраще було б застосовувати правила імен файлів таким чином, що дозволяються лише імена, дозволені в обох файлових системах.
Майкл К
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.