Назад | Перейти на главную страницу

Как учитывается регистр в именах общих ресурсов SMB?

\\host.example.com\ShareName\Tail\Components
  |______________| |_______| |_____________|
        host         share        tail

Я могу найти множество ресурсов в хвостовом компоненте пути UNC, и я предполагаю, что компонент хоста следует правилам DNS в отношении чувствительности к регистру, но как насчет имени общего ресурса?

Когда вы подключаетесь только к хосту, не указывая имя общего ресурса, реализация, к которой вы подключаетесь, может отправить вам правильный регистр общего ресурса. Когда вы подключаетесь напрямую к общему ресурсу, как будет обрабатываться дело?

Я мог видеть только одну строчку в руководстве по Samba, в которой говорится, что «Имена разделов и параметров не чувствительны к регистру», что на самом деле не говорит ни о каком другом (имена разделов используются для создания общих ресурсов, но подключение к этому ресурсу может быть обработано по-другому). Я не вижу упоминания о случае в справке по общим папкам Windows.

Означает ли это, что имена общих ресурсов де-факто нечувствительны к регистру, и никто никогда не думал делать это явным, или может кто-нибудь указать мне на документацию?


Редактировать:

В соответствии с Спецификация Microsoft SMB2:

Сервер ДОЛЖЕН проанализировать поле Buffer, как указано в разделе 2.2.49 [MS-DTYP], чтобы извлечь компоненты имени хоста и общего имени. Если поле Buffer не соответствует формату, указанному в разделе 2.2.9, сервер ДОЛЖЕН отклонить запрос с STATUS_INVALID_PARAMETER. В противном случае сервер ДОЛЖЕН предоставить кортеж <hostname, sharename>, проанализированный из сообщения запроса, чтобы вызвать событие, указанное в разделе 3.1.6.8 [MS-SRVS], для нормализации имени хоста путем разрешения псевдонимов сервера и оценки области общего ресурса. Сервер ДОЛЖЕН использовать <normalized hostname, sharename> для поиска общего ресурса в ShareList. Если общий ресурс с совпадающим именем общего ресурса и именем сервера не найден, сервер ДОЛЖЕН отклонить запрос с STATUS_BAD_NETWORK_NAME.

Таким образом, нет нормализации имени общего ресурса, и я не могу найти ничего, что заявляет, что соответствующая реализация должна выполнять сопоставление без учета регистра.

В идеале я ищу документацию или ответ от кого-то, кто тестировал это на нескольких реализациях, помимо Windows и Samba, обсуждающих свои выводы.

Имена общих ресурсов SMB не чувствительны к регистру. Вы можете подтвердить это, попытавшись создать два общих ресурса с одинаковым именем и разным регистром. Система этого не допустит.