Спеціальні символи у назви файлів Самба


18

Під час подання файлів, що містять спеціальні символи, такі як "() ?:" у імені файлу через Samba, імена перетворюються на невпізнаваний формат. Наприклад, файл

my_file:_(important).txt

відображається як

M43J1E~0.TXT

Чи є спосіб уникнути такої поведінки (очевидно, не перейменуючи файли)? Я припускаю, що кодування символів не винне, тому що кілька символів UTF-8, здається, працюють добре.


Версія Samba 2: 3.4.0-3ubuntu5.5 в Ubuntu 9.10
Матті

3
Додавання "невмілих імен = ні" до smb.conf вирішило це (спасибі, Денніс Вільямсон).
Матті

Відповіді:


10

Windows не дозволяє деяких символів у іменах файлів, які дозволяє Unix. Самба "манить" свої імена, щоб вони відповідали обмеженням Windows. Ви можете перевірити файл /etc/smb.confабо /etc/samba/smb.confпобачити, які налаштування встановлені. Щоб показати ці налаштування плюс параметри за замовчуванням, скористайтеся цією командою:

testparm -vs | less

Щоб трохи звузити це:

testparm -vs|grep "case\|mangl"

Дивіться цю сторінку для отримання додаткової інформації. Також дивіться приблизно на півдорозі цієї сторінки (та сама інформація, що і попереднє посилання).


9

Я використовую спільну папку в OS-X та Windows. Деякі файли мають ту саму проблему, тому що вони потрапляють у наступне: Вони використовують символи у назві файлу, не підтримується Windows.

Дивіться: http://support.microsoft.com/kb/177506

У ньому перераховані символи, не підтримувані Windows у файлах чи каталогах. Я думаю, що Samba використовує той самий список символів, коли перераховує файли та каталоги.

A filename cannot contain any of the following characters:
\ / : * ? " < > |

Трохи далі вони написали:

Символи, які дійсні для іменування файлів, папок чи ярликів, включають будь-яку комбінацію літер (AZ) та цифр (0-9), а також наступні спеціальні символи:

^   Accent circumflex (caret)
&   Ampersand
'   Apostrophe (single quotation mark)
@   At sign
{   Brace left
}   Brace right
[   Bracket opening
]   Bracket closing
,   Comma
$   Dollar sign
=   Equal sign
!   Exclamation point
-   Hyphen
#   Number sign
(   Parenthesis opening
)   Parenthesis closing
%   Percent
.   Period
+   Plus
~   Tilde
_   Underscore

Але я особисто взяв перелік недозволених символів як орієнтир для ознайомлення з деякими клієнтами тут;)


7
  • Я маю ноутбук Apple Macbook Pro з 64-бітною ОС X 10.11 "El Capitan" під керуванням Samba 3, яку я встановив через Macports .

  • У мене також є ноутбук Dell Inspiron з 64-розрядним GNU / Linux XUbuntu 16.04 "Xenial Xerus" під керуванням Samba 3, який я встановив через APT.

Обидві машини мають папки з спільним доступом до мережі та використовують Samba для спілкування по моїй WLAN (бездротовій локальній мережі).

Обидві мої системи є на португальській мові. Таким чином, я використовую спеціальні символи, такі як ç , á , ã , â , ô , é , ó et cetera.

Коли я використовую свій ноутбук Linux для доступу до моїх акцій OS X Samba, всі рядки відображаються правильно: такі слова, як maçã , ônus та bênção , відображаються правильно. Також відображаються файли та папки з довгими іменами, а їх імена відображаються правильно. Таким чином, сервер Samba, що працює на OS X, вже правильно налаштований ...

... але все не працювало навпаки: якщо я використовував додаток Finder на OS X для доступу до моїх спільних Samba-акцій, усі файли та папки, що мають принаймні один із цих спеціальних символів, не відображалися (вони залишалися невидимими для я), а довгі назви файлів і папок були перетворені на дивні короткі імена. Таким чином, сталося щось не так із сервером Samba, який працює на моїй машині Linux.

=> У моєму випадку, що вирішило цю проблему, було додавання наступних рядків до [global]розділу всередині smb.confфайлу на моїй машині Linux:

mangled names = no
dos charset = CP850
unix charset = UTF-8

Після цього я відкрив вікно терміналу оболонки і перезапустив сервер Linux Samba з цією командою:

sudo service smbd restart

... яку можна замінити цією іншою командою (у випадку, якщо команда вище не працює у вашому дистрибутиві Linux):

sudo systemctl restart smbd.service

Після того як я перезапустив сервер Samba Linux, програма Finder в ОС X нарешті правильно показала всі файли та папки, які раніше були приховані через те, що їх імена мали один або кілька спеціальних символів. Наречені ("укорочені") імена також були "безлюдними".

Виноски :

  1. У системах GNU / Linux стандартне розташування smb.confфайлу/etc/samba/smb.conf
  2. Припускаючи, що у вашій системі Linux smb.confфайл зберігається у стандартному місці /etc/samba/: існує кілька різних способів редагування smb.confфайлу. Наприклад, якщо ви не використовуєте середовища робочого столу (наприклад , системи є тільки термінал оболонки, без вікон) ви можете встановити Nano текстовий редактор, з допомогою команди , такі як sudo apt-get install nano -yабо sudo dnf -b -y install nanoчи що - то інше ( в залежності від Linux дистрибутива вас використовують), а потім запустіть sudo nano /etc/samba/smb.conf. У разі , якщо ви використовуєте середу робочого столу, ви можете встановити графічний текстовий редактор , наприклад GNOME Edit , виконавши команду , такі як sudo apt-get install gedit -yабо sudo dnf -b -y install geditчи що - то інше ( в залежності від Linux дистрибутив ви використовуєте), а потім запустити sudo gedit /etc/samba/smb.conf.
  3. У Samba 3+ display charsetпараметр застарілий.
  4. dos charsetПараметр не підтримує UTF-8аргумент. Таким чином, він повинен використовувати аргумент за замовчуванням CP850.
  5. mangled names = noвказує серверу Samba не скорочувати довгі назви файлів і папок. Отже, оскільки клієнт Samba просто копіює користувача, що саме сервер Samba надав клієнтові, після правильного налаштування сервера клієнт більше не буде показувати користувачеві жодне скорочене ім’я.

4

з документації samba ви можете скористатися цими:

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1

4
Це та додавання зловживаних імен = ні до [глобальної] виправило моє на nas4free
Крістофер Чейз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.