Server message block

История

Первая версия протокола была разработана сотрудником IBM Бэрри Файгенбаумом (англ. Barry Feigenbaum) в 1983 году. Изначально SMB был реализован через NetBIOS (поверх NBF, IPX/SPX или NetBIOS over TCP/IP) и использовался в сетях MS-NET и LAN Manager для DOS, а также в Windows for Workgroups. Microsoft регулярно дополняла протокол новыми возможностями; так, вторая версия Microsoft Networks SMB File Sharing Protocol Extensions появилась в 1988 году, 3-я версия — в 1989 году, версия 3.4 — в 1992.

В 1992 году появилась Samba — свободная реализация протокола SMB для UNIX-подобных операционных систем (изначально для SunOS). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провести обратную разработку протокола.

В 1996 году Microsoft стала использовать новое название для дополненной версии протокола, которая использовалась в Windows NT 4.0 — CIFS (англ. Common Internet File System); новое имя прижилось, SMB и CIFS фактически стали синонимами. Microsoft некоторое время пыталась превратить CIFS в международный стандарт через IETF, но после 2000 года прекратила работу по стандартизации.

В Windows 2000 впервые появился SMB непосредственно поверх TCP (без NetBIOS); для этого используется порт 445 (SMB через NBT использовал порт 139).

В Windows Vista появилась новая версия протокола — SMB 2.0. Протокол был значительно упрощён (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования возможно совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера. SMB 2 использует тот же порт (445) как и SMB, но другой заголовок пакетов ( в SMB, в SMB 2).

В 2008 году под давлением Еврокомиссии Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайте MSDN.

Версии протокола SMB в Windows

SMB (Server Message Block, иногда называется LAN-Manager) это сетевой протокол для удаленного доступа к файлам, принтерам и другим сервисам. Для подключения используется порт TCP 445. Различные версии протокола SMB появлялись в следующих версиях Windows:

  • CIFS — Windows NT 4.0
  • SMB 1.0 — Windows 2000
  • SMB 2.0 — Windows Server 2008 и WIndows Vista SP1
  • SMB 2.1 — Windows Server 2008 R2 и Windows 7
  • SMB 3.0 — Windows Server 2012 и Windows 8  (появилась поддержка SMB шифрования)
  • SMB 3.02 — Windows Server 2012 R2 и Windows 8.1
  • SMB 3.1.1 – Windows Server 2016 и Windows 10

При сетевом взаимодействии по протоколу SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая одновременно и клиентом, и сервером.

Ниже представлена сводная таблица, по которой можно определить версию протокола SMB, которая выбирается при взаимодействии разных версий Windows:

Операционная система Win 10, Server 2016 Windows 8.1,Server 2012 R2 Windows 8,Server 2012 Windows 7,Server 2008 R2 Windows Vista,Server 2008 Windows XP, Server 2003 и ниже
Windows 10 ,Windows Server 2016 SMB 3.1.1 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8.1 ,Server 2012 R2 SMB 3.02 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8 ,Server 2012 SMB 3.0 SMB 3.0 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 7,Server 2008 R2 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.0 SMB 1.0
Windows Vista,Server 2008 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 1.0
Windows XP, 2003 и ниже SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0

К примеру, при подключении клиентского компьютера с Windows 7 к файловому серверу с Windows Server 2012 R2 будет использоваться протокол SMB 2.1.

Совет. Определить версию протокола SMB, по которой клиент взаимодействует с сервером можно с помощью команды помощью Powershell:

Чтобы на стороне сервера вывести список используемых клиентами версий протокола SMB и количество клиентов, используемых ту или иную версию протокола SMB, выполните команду:

В нашем примере имеется 825 клиентов, подключенных к серверу с помощью SMB 2.1 (Win 7 / 2008 r2) и 12 клиентов через SMB 3.02 (Win 8.1/ 2012 r2.

Согласно таблице Windows XP, Windows Server 2003 для доступа к общим файлам и папкам на сервере могут использовать только SMB 1.0, который в новых версиях Windows Server (2012 R2 / 2016) может быть отключен.  Таким образом, если в вашей инфраструктуре одновременно используются компьютеры с Windows XP (снятой с поддержки), Windows Server 2003 / R2 и сервера с Windows Server 2012 R2 / Server 2016, нужно понимать, что устаревшие клиенты не смогут получить доступ к файлам и папкам на файловом сервере с новой ОС. А в том случае, если в Windows Server 2016 / 2012 R2 с отключенным SMB 1.0 используется в качестве контроллера домена, то это означает, что клиенты на Windows XP / Server 2003 не смогут выполнить логон скрипты (NETLOGON) и некоторые групповые политики, хранящиеся в сетевых папках на контроллерах домена (например, при использовании централизованного хранилища admx-шаблонов). На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 появляется ошибка:

The specified network name is no longer available

Вашей системе необходимо использовать SMB2 или более позднюю

Другая возможная проблема при доступе к сетевой папке из Windows 10 – поддержка на стороне сервера только протокола SMBv1. Т.к. клиент SMBv1 по умолчанию отключен в Windows 10 1709, при попытке открыть шару вы можете получить ошибку:

Вы не можете подключиться к общей папке, так как она небезопасна. Эта общая папка работает по устаревшему протоколу SMB1, который небезопасен и может подвергнуть вашу систему риску атаки.
Вашей системе необходимо использовать SMB2 или более позднюю версию.
You can’t connect to the file share because it’s not secure. This share requires the obsolete SMB1 protocol, which is unsafe and could expose your system to attack. Your system requires SMB2 or higher.

При этом соседние устройства SMB могут не отображаться в сетевом окружении и при открытии по UNC пути может появляться ошибка 0x80070035.

Т.е. из сообщения об ошибке четко видно, что сетевая папка поддерживает только SMBv1 протокол доступа. В этом случае нужно попытаться перенастроить удаленное SMB устройство для поддержки как минимум SMBv2 (правильный и безопасный путь).

Если сетевые папки раздает Samba на Linux, вы можете указать минимально поддерживаемую версию SMB в файле smb.conf так:

server min protocol = SMB2_10
client max protocol = SMB3
client min protocol = SMB2_10
encrypt passwords = true
restrict anonymous = 2

В Windows 7/Windows Server 2008 R2 вы можете отключить SMBv1 и разрешить SMBv2 так:

В Windows 8.1 отключите SMBv1, разрешите SMBv2 и SMBv3 и проверьте что для вашего сетевого подключения используется частный или доменный профиль:

Если ваше сетевое устройство (NAS, Windows XP, Windows Server 2003), поддерживает только протокол SMB1, в Windows 10 вы можете включить отдельный компонент SMB1Protocol-Client. Но это не рекомендуется!!!

Запустите консоль PowerShell и проверьте, что SMB1Protocol-Client отключен ():

Включите поддержку протокола SMBv1 (потребуется перезагрузка):

Также вы можете включить/отключить дополнительные компоненты Windows 10 (в том числе SMBv1) из меню -> SMB 1.0/CIFS File Sharing Support

В Windows 10 1709 и выше клиент SMBv1 автоматически удаляется, если он не использовался более 15 дней (за это отвечает компонент SMB 1.0/CIFS Automatic Removal).

В этом примере я включил только SMBv1 клиент. Не включайте компонент SMB1Protocol-Server, если ваш компьютер не используется устаревшими клиентами в качестве сервера для хранения общих папок.

После установки клиента SMBv1, вы должны без проблем подключиться к сетевой папке или принтеру. Однако, нужно понимать, что использование данного обходного решения не рекомендовано, т.к. подвергает вашу систему опасности.

Доступ к SMB-ресурсам из Linux

Машины с Linux (UNIX) могут также просматривать и монтировать
SMB-ресурсы. Заметьте, что это может быть сделано когда сервером является
либо машина с Windows, либо с сервером Samba!

Программа клиента SMB для UNIX-машин включена в дистрибутив Samba. Она
обеспечивает ftp-подобный интерфейс командной строки. Вы можете
использовать эту утилиту для переноса файлов между ‘сервером’ под
управлением Windows и клиентом под Linux.

Большинство дистрибутивов Linux также включают полезный пакет smbfs,
который позволяет монтировать и размонтировать SMB-ресурсы. Больше
информации о smbfs можно получить дальше.

Для того, чтобы увидеть какие ресурсы доступны на данной машине, выполните
команду:

    /usr/bin/smbclient -L host

где ‘host’ это имя машины, которую вы хотите видеть. Эта команда вернет
список имен ‘сервисов’ — т.е. имен дисков или принтеров к которым может
быть получен доступ. До тех пор, пока SMB сервер не будет настроен без
управления доступом, он будет запрашивать у вас пароль. Введите в ответ на
запрос пароль для пользователя ‘гость (guest)’ или ваш персональный пароль
на этой машине.

Например:

    smbclient -L zimmerman

Вывод этой команды должен выглядеть примерно так:

Browse list показывает другие SMB сервера в сети с доступными ресурсами.

Для использования клиента, выполните следующую команду:

    /usr/bin/smbclient service <password>

где ‘service’ — имя машины и сервиса. Например, если вы пытаетесь
обратиться к директории, которая доступна под именем ‘public’ на
машине названной ‘zimmerman’, то имя сервиса должно звучать как
\\zimmerman\public. Однако в следствии ограничений
оболочки, вам необходимо спрятать обратный слэш, так что в итоге
это командная строка выглядеть следующим образом:

    /usr/bin/smbclient \\\\zimmerman\\public mypasswd

где ‘mypasswd’ — символьная строка вашего пароля.

Вы получите приглашение smbclient:

Напечатайте ‘h’ чтобы получить помощь об использовании smbclient:

Если вы умеете использовать ftp, то вам не будут нужны справочные страницы
о smbclient.

Хотя вы можете использовать smbclient для тестирования, вы скоро устанете
использовать его в работе. Для работы вам скорее всего понадобится пакет
smbfs. Smbfs поставляется с двумя простыми утилитами, smbmount и
smbumount. Они работают подобно mount и umount для SMB-ресурсов.

Одно важное замечание: Чтобы использовать эти утилиты, у вас должна быть
поддержка smbfs вкомпилированная в ядро!

Следующий пример показывает типичное использование smbmount для
монтирования SMB-ресурса, названного «customers» с машины с
именем «samba1»:

Запуск команды mount покажет вам, что ресурс смонтирован, точно также как и
через экспорт NFS:

Пожалуйста прочитайте справочные страницы smbmount и smbumount для
дополнительной информации о описанных выше операциях.

NextPrevious

Спонсоры:

Хостинг:

Maxim ChirkovДобавить, Поддержать, Вебмастеру

NAME MANGLING

Samba supports so that DOS and Windows clients can use files that don’t
conform to the 8.3 format. It can also be set to adjust the case of 8.3 format filenames.

There are several options that control the way mangling is performed, and they are grouped here rather
than listed separately. For the defaults look at the output of the testparm program.

These options can be set separately for each service.

The options are:

case sensitive = yes/no/auto

controls whether filenames are case sensitive. If they aren’t, Samba must do a filename search and match on
passed names. The default setting of auto allows clients that support case sensitive filenames (Linux CIFSVFS
and smbclient 3.0.5 and above currently) to tell the Samba server on a per-packet basis that they wish to
access the file system in a case-sensitive manner (to support UNIX case sensitive semantics). No Windows or
DOS system supports case-sensitive filename so setting this option to auto is that same as setting it to no
for them. Default auto.

default case = upper/lower

controls what the default case is for new filenames (ie. files that don’t currently exist in the filesystem).
Default lower. IMPORTANT NOTE: As part of the optimizations for directories containing
large numbers of files, the following special case applies. If the options
, , and
are set, then the case of all
incoming client filenames, not just new filenames, will be modified. See additional notes below.

preserve case = yes/no

controls whether new files (ie. files that don’t currently exist in the filesystem) are created with the case
that the client passes, or if they are forced to be the case. Default
yes.

short preserve case = yes/no

controls if new files (ie. files that don’t currently exist in the filesystem) which conform to 8.3 syntax,
that is all in upper case and of suitable length, are created upper case, or if they are forced to be the
case. This option can be used with to permit
long filenames to retain their case, while short names are lowercased. Default yes.

Как проверить версию SMB в Windows

Прежде всего, если у вас Windows 7 , вам не следует отключать SMB v2. Это связано со следующими причинами:

  • Составление запроса — позволяет отправлять несколько запросов SMB 2 как один сетевой запрос
  • Больше чтения и записи — лучшее использование более быстрых сетей
  • Кэширование свойств папок и файлов — клиенты хранят локальные копии папок и файлов
  • Долговечные ручки — позволяют подключению прозрачно переподключаться к серверу при временном отключении
  • Улучшена подпись сообщений — HMAC SHA-256 заменяет MD5 в качестве алгоритма хеширования
  • Улучшенная масштабируемость для обмена файлами — значительно увеличилось количество пользователей, общих ресурсов и открытых файлов на сервер
  • Поддержка символических ссылок
  • Модель аренды клиентских блокировок — ограничивает объем данных, передаваемых между клиентом и сервером, повышает производительность в сетях с высокой задержкой и повышает масштабируемость SMB-серверов.
  • Поддержка большого MTU — для полноценного использования 10-гигабайтного (ГБ) Ethernet
  • Повышенная энергоэффективность — клиенты, которые имеют открытые файлы на сервере, могут спать.

Даже если вы работаете в Windows 8.1 или Windows 10 , вам не следует отключать SMB v3 или SMB v2, поскольку, помимо указанных выше проблем, вы можете столкнуться со следующими проблемами тоже, которые идут с отключением SMB v3:

  • Прозрачное аварийное переключение — клиенты повторно подключаются без перерыва к узлам кластера во время обслуживания или аварийного переключения
  • Scale Out — одновременный доступ к общим данным на всех узлах файлового кластера
  • Многоканальный — агрегирование пропускной способности сети и отказоустойчивости, если доступно несколько путей между клиентом и сервером.
  • SMB Direct — добавляет поддержку сети RDMA для очень высокой производительности, с низкой задержкой и низкой загрузкой процессора
  • Шифрование — обеспечивает сквозное шифрование и защищает от прослушивания в ненадежных сетях.
  • Лизинг каталогов — улучшает время отклика приложений в филиалах за счет кэширования
  • Оптимизация производительности — оптимизация для небольших случайных операций чтения/записи.

Способы проверки, какая версия SMB установлена ​​на Сервере.

Мы будем использовать следующие методы, чтобы проверить, какая версия SMB установлена ​​на вашем компьютере:

  1. Метод PowerShell.
  2. Метод редактора реестра.

1] Метод PowerShell

Если вы хотите проверить, какую версию SMB вы используете, вы можете просто ввести следующую команду в PowerShell:

SMB v1 Windows 10 и Windows 8.1

 Get-WindowsOptionalFeature –Online –FeatureName SMB1Protocol 

SMB v2 для Windows 10 и Windows 8.1

 Get-SmbServerConfiguration | Выберите EnableSMB2Protocol 

SMB v1 для Windows 7

 Get-Item HKLM: \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters | ForEach-Object {Get-ItemProperty $ _. Pspath} 

SMB v2 для Windows 7

 Get-ItemProperty HKLM: \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters | ForEach-Object {Get-ItemProperty $ _. Pspath} 

Если он возвращает значение как True , он включен, иначе отключен.

2] Метод редактора реестра

Введите regedit в поле Начать поиск и нажмите Enter. После открытия редактора реестра перейдите к следующему

 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Параметры 

Теперь, если у вас есть DWORD с именами SMB1 или SMB2 , проверьте их значения.

Если для него установлено значение 0, оно отключено.

И в любом другом случае он включен.

Способы проверить, какая версия SMB установлена ​​на клиентах.

Мы будем использовать следующие методы, чтобы проверить, какая версия SMB установлена ​​на вашем компьютере:

  1. Метод PowerShell.
  2. Метод редактора групповой политики.

1] Метод PowerShell

Итак, если вы хотите проверить, какая версия SMB вы используете, вы можете просто ввести следующее в командной строке с привилегиями уровня администратора,

SMB v1 Windows 10 и Windows 8.1

 sc.exe qc lanmanworkstation 

SMB v2 для Windows 10 и Windows 8.1

 sc.exe qc lanmanworkstation 

2] Метод редактора групповой политики

Стоит отметить, что этот метод не будет работать в Windows 10 Home или аналогичной редакции Windows 8 или Windows 7.

Откройте окно «Выполнить», введите gpedit.msc и нажмите Enter, чтобы открыть редактор локальной групповой политики. Перейдите по следующему пути:

В разделе Реестр найдите элемент реестра со следующими свойствами:

Если значение данных установлено в 4, SMB отключен.

Для детального чтения посетите microsoft.com.

Связанное чтение . Почему и как отключить SMB1 в Windows 10/8/7.

Формат заголовка SMB Править

8 16 24 32 bits
Command RCLS Reserved ERR
ERR (cont) REB/FLG Reserved
Reserved
Reserved
Reserved
Tree ID Process ID
User ID Multiplex ID
WCT VWV
BCC BUF
SMB header structure

Основные элементы структуры заголовка SMB:
   • Command — команда протокола.
   • RCLS — код класса ошибки.
   • ERR — код ошибки.
   • Tree ID (TID) — идентификатор соединения с сетевым ресурсом.
   • Process ID (PID) — идентификатор клиентского процесса фактического соединения.
   • User ID (UID) — идентификатор пользователя; используется сервером для проверки прав доступа пользователя.
   • Multiplex ID (MID) — идентификатор группы пользователя; используется сервером для проверки прав доступа группы пользователя.
   • WCT — количество параметров, следующих за заголовком.
   • BCC — количество байт данных, следующих за параметрами.

Аутентификация Microsoft SMB Protocol

Модель механизма защиты, которая используется в Microsoft SMB Protocol, в основном идентична модели любого другого варианта SMB-протокола. Она состоит из двух уровней защиты: user-level (пользовательский уровень) и share-level (уровень совместно используемого ресурса). Под share (опубликованный ресурс) понимается файл, каталог, принтер, любая услуга, которая может быть доступна клиентам по сети.

Аутентификация на уровне user-level означает, что клиент, который пытается получить доступ к ресурсу на сервере, должен иметь username (имя пользователя) и password (пароль). Если данная аутентификация прошла успешно, клиент имеет доступ ко всем доступным ресурсам сервера, кроме тех, что с share-level-защитой. Этот уровень защиты даёт возможность системным администраторам конкретно указывать, какие пользователи и группы пользователей имеют доступ к определённым данным. Он используется в Windows NT, Windows 2000, Windows XP.

Аутентификация на уровне share-level означает, что доступ к ресурсу контролируется паролем, установленным конкретно на этот ресурс. В отличие от user-level, этот уровень защиты не требует имя пользователя для аутентификации и не устанавливается никакая уникальность текущего пользователя. Этот уровень используется в Windows NT, Windows 2000 и Windows XP для обеспечения дополнительного уровня контроля защиты сверх user-level. Операционные системы Windows 95, Windows 98 и Windows ME реализуют защиту только этого уровня.

В обоих этих уровнях защиты используется шифрование. Пароль зашифровывается, прежде чем отправляется на сервер. Типы шифрования NTLM, NTLMv2 и старые версии LAN Manager (LM) поддерживаются протоколом. Оба метода шифрования используют аутентификацию типа отклик-отзыв, в которой сервер посылает клиенту случайную сгенерированную строку, а клиент возвращает в качестве отзыва обработанную строку, которая доказывает, что клиент имеет достаточный мандат для доступа к данным.

Принцип работы

SMB — это протокол, основанный на технологии клиент-сервер, который предоставляет клиентским приложениям простой способ для чтения и записи файлов, а также запроса служб у серверных программ в различных типах сетевого окружения. Серверы предоставляют файловые системы и другие ресурсы (принтеры, почтовые сегменты, именованные каналы и т. д.) для общего доступа в сети. Клиентские компьютеры могут иметь у себя свои носители информации, но также имеют доступ к ресурсам, предоставленным сервером для общего пользования.

Клиенты соединяются с сервером, используя протоколы TCP/IP (а, точнее, NetBIOS через TCP/IP), NetBEUI или IPX/SPX. После того, как соединение установлено, клиенты могут посылать команды серверу (эти команды называются SMB-команды или SMBs), который даёт им доступ к ресурсам, позволяет открывать, читать файлы, писать в файлы и вообще выполнять весь перечень действий, которые можно выполнять с файловой системой. Однако в случае использования SMB эти действия совершаются через сеть.

Как было сказано выше, SMB работает, используя различные протоколы. В сетевой модели OSI протокол SMB используется как протокол Application/Presentation уровня и зависит от низкоуровневых транспортных протоколов. SMB может использоваться через TCP/IP, NetBEUI и IPX/SPX. Если TCP/IP или NetBEUI будут заняты, то будет использоваться NetBIOS API. SMB также может посылаться через протокол DECnet. Digital (ныне Compaq) сделала это специально для своего продукта PATHWORKS. NetBIOS в случае использования через TCP/IP имеет различные названия. Microsoft называет его в некоторых случаях NBT, а в некоторых NetBT. Также встречается название RFCNB.

С начала существования SMB было разработано множество различных вариантов протокола для обработки всё возрастающей сложности компьютерной среды, в которой он использовался. Договорились, что реальный вариант протокола, который будет использоваться клиентом и сервером, будет определяться командой negprot (negotiate protocol). Этот SMB обязан посылаться первым до установления соединения. Первым вариантом протокола был Core Protocol, известный как SMB-реализация PC NETWORK PROGRAM 1.0. Он должным образом поддерживает весь набор основных операций, который включает в себя:

  • присоединение к файловым и принтерным ресурсам и отсоединение от них;
  • открытие и закрытие файлов;
  • открытие и закрытие принтерных файлов;
  • чтение и запись файлов;
  • создание и удаление файлов и каталогов;
  • поиск каталогов;
  • получение и установление атрибутов файла;
  • блокировка и разблокировка файлов.

External links

The smb2-protocol mailing list.

An implementation in Samba4.

Microsoft’s : Server Message Block (SMB) Version 2 Protocol Specification

Implementations

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     0xFE      |      'S'      |      'M'      |      'B'      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Header Length        |           (padding)           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          NT_Status                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Opcode             |            (padding)          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       :S:C:P:R|               |               |               |    Flags
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Chain Offset                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Command Sequence-                      |
+-+-+-+-+-+-+                                     +-+-+-+-+-+-+-+
|                             Number                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Process ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Tree ID                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+-+-+-+-+                    User ID                    +-+-+-+-+
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+-+-+-+-+                                               +-+-+-+-+
|                                                               |
+-+-+-+-+                   Signature                   +-+-+-+-+
|                                                               |
+-+-+-+-+                                               +-+-+-+-+
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

API

The SMB2 class is the constructor of your SMB2 client.

the parameter accepts this list of attributes:

  • (mandatory): the share you want to access
  • (mandatory): the domain of which the user is registred
  • (mandatory): the username of the user that access the share
  • (mandatory): the password
  • (optional): default , the port of the SMB server
  • (optional): default , the number of simulatanous packet when writting / reading data from the share
  • (optional): default , the timeout in milliseconds before to close the SMB2 session and the socket, if setted to the connection will never be closed unless you do it

Example:

varSMB2=require('smb2');var smb2Client =newSMB2({  share'\\\\000.000.000.000\\c$', domain'DOMAIN', username'username', password'password!'});

Asynchronous readdir(3). Reads the contents of a directory. The callback gets two arguments (err, files) where files is an array of the names of the files in the directory excluding ‘.’ and ‘..’.

Example:

smb2Client.readdir('Windows\\System32',function(err,files){if(err)throw err;console.log(files);});
  • String
  • Object
  • Function

Asynchronously reads the entire contents of a file. Example:

smb2Client.readFile('path\\to\\my\\file.txt',function(err,data){if(err)throw err;console.log(data);});

The callback is passed two arguments (err, data), where data is the contents of the file.

If no encoding is specified, then the raw buffer is returned.

  • String
  • String | Buffer
  • Object
  • Function

Asynchronously writes data to a file, replacing the file if it already exists. data can be a string or a buffer.

The encoding option is ignored if data is a buffer. It defaults to ‘utf8’.

Example:

smb2Client.writeFile('path\\to\\my\\file.txt','Hello Node',function(err){if(err)throw err;console.log('It\'s saved!');});

Asynchronous mkdir(2). No arguments other than a possible exception are given to the completion callback. mode defaults to 0777.

Example:

smb2Client.mkdir('path\\to\\the\\folder',function(err){if(err)throw err;console.log('Folder created!');});

Asynchronous rmdir(2). No arguments other than a possible exception are given to the completion callback.

Example:

smb2Client.rmdir('path\\to\\the\\folder',function(err){if(err)throw err;console.log('Folder deleted!');});

Test whether or not the given path exists by checking with the file system. Then call the callback argument with either true or false. Example:

smb2Client.exists('path\\to\\my\\file.txt',function(err,exists){if(err)throw err;console.log(exists ?"it's there""it's not there!");});

Asynchronous unlink(2). No arguments other than a possible exception are given to the completion callback.

smb2Client.unlink('path\\to\\my\\file.txt',function(err){if(err)throw err;console.log("file has been deleted");});

Asynchronous rename(2). No arguments other than a possible exception are given to the completion callback.

smb2Client.rename('path\\to\\my\\file.txt','new\\path\\to\\my\\new-file-name.txt',function(err){if(err)throw err;console.log("file has been renamed");});

This function will close the open connection if opened, it will be called automatically after ms of no SMB2 call on the server.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector