Хорошо ли работает Samba с Windows, когда включены имена с учетом регистра?

12

Я хочу, чтобы общий доступ к * nix Samba был доступен для клиентов Windows.

В Samba есть возможность включить или отключить чувствительность к регистру имени файла. Обычно для доступа к Windows это отключено, поэтому fred == FRED = fReD.

Тем не менее, это приводит к одной важной проблеме, AFAICT:

  • В Unix вы создаете две папки с именами «RODDY» и «Roddy».
  • В Windows вы увидите обе папки, но ...
  • Когда вы удаляете / переименовываете / открываете один из Windows, вы можете в конечном итоге удалить / переименовать / и т. Д. Любой из них. Вы не можете знать, какой! ,

Итак, мой вопрос, как Samba ведет себя в Windows, если флаг с учетом регистра установлен «ON»? Может ли пользователь по-прежнему видеть обе папки и работать с файлами согласованно?

Родди
источник

Ответы:

12

Это должно быть хорошо. Windows Explorer отлично справляется с отображением регистра имени файла. Я использую это в своем файле smb.conf, чтобы убедиться, что я набираю в Проводнике то, что использует Samba (я установил все эти ресурсы для каждого ресурса):

case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes

Я провел быстрый тест (Samba 3.0.24 на бэкэнде, WinXP на фронте). Файлы были созданы на сервере Samba через сеанс SSH.

$ cd /some/samba/share/path
$ mkdir test
$ cd test

$ mkdir test1 TEST1
$ touch test1/foo TEST1/bar

После этого я просмотрел свой подключенный диск к тестовой директории. Я вижу каталоги "test1" и "TEST1". Я открыл «test1» и увидел файл «foo». Я открыл «TEST1» и увидел файл «bar». Все идет нормально.

Затем я вернулся в тестовый каталог и в окне проводника переименовал TEST1 в TEST2. Windows слегка взбесилась - она ​​переименовала папку, а затем показала ОБА папок как TEST2 - похоже, переименовала обе папки. Но в терминале SSH я проверил:

$ ls
test1 TEST2

Поэтому Windows переименовала файл, и Samba правильно получила имя файла. Когда я нажал F5 в окне проводника, чтобы обновить содержимое папки, дисплей изменился, чтобы показать правильные имена папок.

Предостережение: файловые системы Linux допускают некоторые символы, которых нет в Windows (например, «:»). У Samba есть опция «искажения имени», чтобы превратить эти имена в то, что понравится Windows. Например, если я создаю файл с именем «FA: 23» в моем окне SSH, Samba меняет имя на «F7T4H0 ~ F», и это то, что появляется в окне проводника.

шарлатан
источник
Обратите внимание, что с клиентом Windows 95 вы не можете получить доступ к каталогам внутри общих ресурсов, когда эта case sensitiveопция включена. Вы должны использовать эту autoопцию в этом случае.
Деви
Предположим, у вас есть две папки в вашей файловой системе unix: Test1 и test1 Какую из них пользователь увидит в Windows? Могу ли я убедиться в Samba, что если папка Test1 существует, и кто-то в unix пытается создать папку test1, она автоматически объединяет ее с Test1, чтобы пользователи Windows всегда могли видеть все файлы? По моему опыту, пользователь Windows не может видеть обе папки, если существуют Test1 и test1, но только одну из них.
Эрик
@ Эрик Обычно оба будут отображаться. Windows понимает чувствительность к регистру на всех уровнях и внедрила его глубоко в свои файловые системы. Хотя не пытался.
Tiberiu-Ionuț Stan
1

Варианты, которые работали для меня ниже:

preserve case           = yes
short preserve case     = yes
surajmohan
источник