Поддержка имен файлов Windows
🕛 21.06.2009, 21:14
В системах Linux и Windows действуют разные соглашения по именованию файлов. Если в вашей сети, кроме Windows, присутствуют также клиенты DOS, то при настройке Samba следует учесть, что правила именования DOS-файлов отличаются от правил, принятых не только в Windows. Таким образом, при работе в сети с компьютерами Windows и DOS сервер Samba должен решить сложную задачу: представить файловую систему Linux в формате, совместимом с файловыми системами DOS и Windows.Одно из самых важных отличий файловой системы Linux от системы Windows состоит в том, что имена файлов Linux чувствительны к регистру символов, т. е. имена FILE. TXT, file.txt и File, txt идентифицируют различные файлы; при помещении их в один каталог конфликт не возникает. Это также означает, что при вводе имени файла пользователь должен следить за тем, чтобы были заданы символы требуемого регистра. В отличие от Linux, Windows хранит сведения о регистре, но не учитывает их при сравнении имен файлов, поэтому два файла с именами, отличающимися только регистром символов, не могут существовать в одном и том же каталоге. Файловая система DOS нечувствительна к регистру символов; если даже пользователь задал имя файла буквами нижнего регистра, система преобразует их в прописные буквы.
Параметр case sensitive, помещаемый в конфигурационный файл, определяет, должен ли сервер Samba учитывать регистр символов в именах файлов. По умолчанию принимается значение No данного параметра, что позволяет серверу Samba работать с клиентами Windows и DOS. Если клиент запросит некоторый файл, Samba проверит все файлы, отличающиеся от указанного только регистром символов, т. е. будет имитировать поведение Windows. Недостаток подобного подхода состоит в том, что производительность системы несколько снижается. Если вы хотите добиться максимальной производительности, вам надо задать параметр sensitive = Yes, но при этом некоторые из программ Windows будут работать с ошибками. Эти ошибки, конечно же, связаны с особенностями взаимодействия с сервером Samba. Параметр sensitive = Yes целесообразно использовать при работе с клиентами, которые выполняются в тех операционных системах, в которых, подобно Linux, в именах файлов и каталогов учитывается регистр символов.
Параметры preserve case и short preserve case определяют, должен ли сервер Samba сохранять информацию о регистре символов в именах файлов. Если установлено значение Yes, Samba сохраняет имена файлов именно в том виде, в котором их задают клиенты. При установленном значении No Samba будет преобразовывать буквы в именах файлов к верхнему или нижнему регистру. Конкретный регистр зависит от параметра default case. По умолчанию для этого параметра установлено значение Lower, но при необходимости вы можете задать значение Upper. Параметр preserve case воздействует на все файлы, но для коротких имен более высокий приоритет имеет параметр short preserve case. (Короткими именами называются имена, составленные по соглашениям DOS, т. е. содержащие до 8 символов в имени файла и до 3 символов в расширении; такие имена принято также называть именами 8.3.) Если в вашей сети содержится большое количество DOS-клиентов, следует задать параметр short preserve case = No. В результате в системе Linux имена файлов будут составляться из символов нижнего регистра, но DOS-клиентам эти же имена будут доступны преобразованными к верхнему регистру.
Средства SMB/CIFS обеспечивают доставку имен 8.3 даже в том случае, если исходные имена содержат большее количество символов. Это позволяет организовывать доступ к файлам с длинными именами для клиентов, работающих в DOS или 16-битовой системе Windows. Поскольку в Linux длина имеди файла не ограничена, сервер Samba должен динамически генерировать имена 8.3. Параметр mangled names = Yes (значение по ' умолчанию) разрешает поддержку имен 8.3; если же вы укажете mangled names = No, создание таких имен будет запрещено.