Я хочу, чтобы общий ресурс Samba * nix был доступен клиентам Windows.
Samba имеет возможность включать или отключать чувствительность к регистру имен файлов. Обычно для доступа к Windows это отключено, поэтому fred == FRED = fReD.
Однако это приводит к одной важной проблеме, AFAICT:
Итак, мой вопрос: как Samba ведет себя в Windows, если флаг с учетом регистра установлен в «ON»? Может ли пользователь по-прежнему видеть обе папки и согласованно работать с файловыми операциями?
Все должно быть хорошо. Проводник Windows отлично справляется с отображением регистра имен файлов. Я использую это в моем 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". Я открыл "ТЕСТ1" и увидел файл "бар". Все идет нормально.
Затем я вернулся в каталог test и в окне проводника переименовал TEST1 в TEST2. Windows немного испугалась - она переименовала папку, а затем показала ОБЕИ папки как TEST2 - похоже, переименовала обе папки. Но в терминале SSH я проверил:
$ ls
test1 TEST2
Итак, Windows переименовала файл, и Samba правильно получила имя файла. Когда я нажал F5 в окне проводника, чтобы обновить содержимое папки, дисплей изменился, чтобы отобразить правильные имена папок.
Предостережение: Файловые системы Linux допускают некоторые символы, которые не поддерживает Windows (например, «:»). В Samba есть опция "изменения имени" чтобы превратить эти имена файлов в то, что понравится Windows. Если я создаю файл с именем «FA: 23» в моем окне SSH, например, Samba изменяет имя до «F7T4H0 ~ F», и это то, что появляется в окне проводника.
Варианты, которые сработали для меня, приведены ниже:
preserve case = yes
short preserve case = yes