Как обнаружить и изменить сетевой протокол «SMB» при возникновении ошибки в Windows 10

Монтирование SMB не что иное как подключение сетевой папки WIndows в Linux. SMB (Server Message Block) – сетевой протокол удаленного доступа к сетевым ресурсам (файлы, папки, принтеры и т.п.). В первой версии протокола был известен также как CIFS (Common Internet File System). Протоком SMB повсеместно используется во всех ОС Microsoft Windows.

В современных дистрибутивах Linux уже можно совершенной спокойно путешествовать по сетевым дискам. Но куда удобнее если смонтировать сетевой диск сразу в папку, да еще и на рабочем столе, красота. Я создал папку с общим доступом на сервере Hyper-V, её и буду монтировать. Монтирование SMB буду делать под специально заведенным пользователем, дабы не светить пароль админа.

Монтируемая папка

Монтируемая директория доступна только администраторам и пользователю smb (создан специально для монтирования). Сделать общую папку на сервере Windows можно двумя способами: 1 – через свойства папки; 2 – через Powershell. Через свойства папки проще и быстрее как для новичка.

smb-mount-shared-folder.png

Но в моем случае с сервером HyperV 2019 сработал только второй способ, через Powershell.

 New-SmbShare -Name "smb_mount" -Path "F:smb_mount" -FullAccess "Administrator", "smb" 
new-smbshare.png

Данной командой я сделал общей папку расположенную по пути F:smb_mount и присвоил ей имя smb_mount. Права на доступ к папке выдал пользователю Administrator и smb.

shared_folder.png

Общая папка у меня доступна по пути \hvs19smb_mount, но монтировать я буду ее по ip адресу. Принципиального вопроса как монтировать нет, просто не всегда есть возможность использовать имя.

С монтируемой папкой закончили, создадим папку куда будем монтировать. Я создал папку в /opt и назвал её F (по имени диска где лежит монтируемая папка) для удобства.

 sudo mkdir /opt/F 

Установим набор утилит для монтирования SMB

Для Ubuntu (и прочих Debian`ов)

 sudo apt-get install cifs-utils 

Для Centos 8 (и прочих RPM дистрибутивов на YUM)

 sudo yum install cifs-utils 
Монтирование SMB

Все необходимые папки мы создали, теперь приступим к монтированию файловой системы.

 sudo mount -t cifs -o username=smb,password=пароль //192.168.1.110/smb_mount /opt/F 

Пройдемся по параметрам:

  • -t cifs – тип файловой системы cifs (полностью совместим с SMB)
  • username – пользователь у которого есть доступ к монтируемой папке (на сетевом диске). Если разрешено, можно использовать гостя, без пароля. В таком случае указываем username=guest
  • password – пароль от учетной записи этого пользователя
  • //192.168.1.110/smb_mount – общая папка на сервере которую монтируем
  • /opt/F – папка куда монтируем.

Посмотрим что все получилось, проверим свободное место в сетевой папке

 df -h 
mounted-opt-f.png

Можно использовать дополнительные возможности при монтировании, используя ключи после параметра -o. Вот некоторые из них

  • rw — запись и чтение
  • ro — только чтение
  • iocharset=utf8 — в данной кодировке будет выводится информация;
  • codepage=cp866 — кодировка используемая на сервере с общей папкой. Обычно Windows устанавливает кодировку cp866.
  • vers=3.0 – принудительно указать версию подключения SMB протокола. Для безопасного подключения используйте последнюю версию.

Используя команду mount мы монтируем папку в ручном режиме и после перезагрузки монтирования не произойдет. Для автоматического монтирования папки читаем следующий раздел.

Автоматическое монтирование SMB

Для постоянного монтирования папке при старте системы необходимо внести изменения в файл /etc/fstab. При монтировании сетевого диска с SMB используется пароль. Для большей сохранности не будем указывать его в файле fstab, а сохраним в директории root.

Создадим файл с учетными данными

 sudo nano /root/.cifsmnt 

Добавим в файл строки: имя пользователя, пароль, домен (если используется). У меня домена нет, поэтому добавлю только имя и пароль

 username=smb password=пароль domain=mydomain 

Откроем файл /etc/fstab для редактирования

 sudo nano /etc/fstab 

Добавим новую строку в конец файла

 //192.168.1.110/smb_mount /opt/F   cifs   user,rw,credentials=/root/.cifsmnt 0 0 
mounted-fstab.png

Сохраним файл и перезагрузим компьютер. После этого сетевая папка будет монтироваться автоматически.

Разберем указанные параметры

  • //192.168.1.110 – ip адрес сервера где находится сетевая папка
  • /smb_mount – сетевая папка на указанном выше сервере
  • /opt/F – папка на локальном компьютере куда будем монтировать сетевую папку
  • cifs – тип монтируемой файловой системы
  • user – разрешение монтировать для любого пользователя
  • rw – разрешения на чтение/запись на диск при монтировании
  • credentials – путь к файлу с данными учетной записи используемых для подключения по SMB
  • – не проверять файловую систему при старте программой fsck
Права на папки и файлы

Примонтированный диск по умолчанию монтируется от root и разрешает запись на диск только под ним. Рассмотрим опции позволяющие изменить доступ на примонтированные папки и файлы. Также рассмотрим настройки по смене владельца смонтированной папки.

  • uid – задает владельца каталога. Узнать uid пользователей можно в файле /etc/passwd
  • gid – задает группу владельца каталога. Узнать gid групп можно в файле /etc/passwd
  • file_mode=0777 – права на доступ к файлам. 0777 – разрешено запись/чтение всем.
  • dir_mode=0777 – права на доступ к папкам. 0777 – разрешено запись/чтение всем.

Пример записи в файле /etc/fstab монтирования от моего пользователя (не root) с полным доступом ко всем файлам и папкам

 //192.168.1.110/smb_mount /opt/F   cifs   user,rw,credentials=/root/.cifsmnt,file_mode=0777,dir_mode=0777,uid=1000,gid=1000 0 0 
Размонтирование SMB

Размонтировать сетевую папку SMB можно используя команду umount

 sudo umount /opt/F 

В параметрах команды umount указываем директорию куда была смонтирована сетевая папка. В моем случае это /opt/F

umount-busy.png

Если смонтированная файловая система сейчас занята, появится сообщение umount: target is busy . В таком случае размонтировать получиться с ключом -l

 umount /opt/F -l 
Решение проблем монтирования

Если по какой либо причине после ваших попыток папка все же не монтируется, необходимо смотреть системный журнал.

 grep "cifs" /var/log/syslog 
grep-error.png

В системном журнале будет указана причина ошибки монтирования. Как пример не верный логин/пароль, не установленные утилиты cifs и т.п.

Поделиться:

Он включен только потому, что ещё некоторыми пользователями используются старые приложения, которые не были вовремя обновлены для работы с SMB2 или SMB3. Корпорация Майкрософт составила их список. Его, при необходимости, найдите и просмотрите в Интернете.

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

Вы готовы к внесению изменений? Тогда давайте продолжим.

SMB1

Откройте Панель управления, где перейдите в раздел «Программы» и выберите подраздел «Включение / отключение компонентов Windows».

smb1-1.png

В списке найдите опцию «Поддержка общего доступа к файлам SMB 1.0/CIFS», снимите с него отметку и нажмите кнопку «ОК».

smb1-2-800x371.png

Перезагрузите операционную систему, предварительно сохранив все свои редактируемые перед этим файлы, такие как документы и т.п.

smb1-3-800x484.png

ДЛЯ WINDOWS 7

Здесь вам поможет редактирование системного реестра. Он является мощным инструментом системы и в случае внесения в него неправильных данных, может привести к нестабильной работе ОС. Используйте его с осторожностью, перед этим обязательно создайте резервную копию для отката.

Откройте редактор, для чего нажмите сочетание клавиш Win+R на клавиатуре и набрав «regedit» в поле для ввода. Далее пройдите по следующему пути:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters

создайте новый 32-битный параметр DWORD и присвойте ему имя «SMB1» со значением «0». Перезагрузите систему.

Внимание! Эти способы действуют для отключения протокола только на одном ПК, но не во всей сети. Обратитесь к официальной документации Microsoft за интересующей вас информацией.

Привет! Для тех кто не в теме, начну из далека. На компьютерах и ноутбуках с установленной Windows в проводнике есть отдельная вкладка «Сеть». На этой вкладке отображаются устройства из сетевого окружения. То есть, открыв вкладку «Сеть» мы там можем наблюдать компьютеры, сетевые хранилища (NAS), устройства мультимедиа (DLNA), флешки и внешние диски, которые подключены к роутеру и к которым настроен общий доступ. Проще говоря, те устройства, которые подключены через один роутер (находятся в одной сети) и на которых включена функция сетевого обнаружения (устройства, которые могут быть обнаружены в локальной сети). Там так же может отображаться наш маршрутизатор (раздел «Сетевая инфраструктура») и другие устройства.

Сейчас поясню что и как, и почему я вообще решил написать эту статью. У меня роутер ASUS, к которому я подключил USB флешку, и настроил общий доступ к этой флешке для всех устройств в сети. И что вы думаете, в разделе «Сеть» на всех компьютерах появился этот сетевой накопитель (он там отображается как «Компьютер»), а на моем компьютере он не отображался. То есть, мой компьютер не видел ни флешку подключенную к роутеру, ни другие компьютеры в этой сети. Зато отображался DLNA-сервер запущен на том же роутере. Но это ничего не меняет, так как мне нужен обычный сетевой доступ к накопителю.

17-02-2018-20-02-28.jpg

Так же я не мог получить доступ к флешке, когда набирал ее адрес //192.168.1.1 в проводнике. Сразу этот адрес открывался через браузере. И мне не удалось подключить этот накопитель как сетевой диск. Его просто не было в списке доступных устройств в сетевом окружении.

Такая проблема, когда Windows 7, Windows 8, или Windows 10 не видит сетевые устройства – не редкость. Это не обязательно должна быть флешка, или внешний HDD, который вы подключили к своему маршрутизатору, как в моем случае. Чаще всего настраивают общий доступ между компьютерами в локальной сети. И точно так же сталкиваются с проблемой, когда компьютеры подключены к одной сети (к одному роутеру), настройки общего доступа выставлены правильно, а на вкладке «Сеть» пусто. Или отображается только маршрутизатор и ваш компьютер.

Так как причин и соответственно решений может быть много, то я наверное начну с самых простых (которые мне не помогли) и в конце этой статьи поделюсь решением, которое помогло в моем случае. В итоге мой ноутбук все таки увидел все устройства в сети. В том числе сетевой накопитель и другой компьютер, который так же подключен к этой сети.

18-02-2018-12-12-24.jpg

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

Проверяем настройки общего доступа

Мы будем рассматривать два случая:

  1. Когда компьютеры не видят друг друга в локальной сети.
  2. Общий доступ к сетевому накопителю. Это у нас может быть флешка, или жесткий диск который подключен к роутеру, или отдельный накопитель (он же NAS).

Первый случай

Чтобы компьютеры могли видеть друг друга и отображаться в проводнике в разделе «Сеть», они должны быть подключены через один маршрутизатор. Или соединены напрямую (кабелем, или по Wi-Fi). Проще говоря, они должны находится в одной локальной сети.

Дальше, на всех компьютерах (не знаю, сколько их там у вас), желательно присвоить статус сети «Домашняя» (частная). Как это сделать в Windows 10, я писал в статье домашняя (частная) и общественная (общедоступная) сеть Windows 10. В Windows 7 достаточно зайти в «Центр управления сетями и общим доступом» и сменить там статус текущего подключения.

18-02-2018-11-42-40.jpg

Если после этого по прежнему компьютер не обнаруживает другие компьютеры (или наоборот), то давайте еще проверим параметры общего доступа.

Для этого, в окне «Центр управления сетями и общим доступом» (если не знаете как открыть его в Windows 10, то смотрите эту статью) нажимаем на пункт «Изменить дополнительные параметры общего доступа».

18-02-2018-11-48-22.jpg

И для текущего профиля (обычно это «Частная») выставляем параметры как на скриншоте ниже.

07-11-2019-17-49-34.jpg

Делаем это на всех компьютерах в локальной сети.

Статьи по этой теме:

Не путайте настройки общего доступа с настройками FTP. Настройки FTP-сервера на роутере в данном случае не при чем.

Ну и если другие устройства видят сетевой накопитель и имеют к нему доступ, а на каком-то конкретном компьютере доступа к нему нет, то значит проблема не на стороне роутера. Перебирайте настройки «проблемного» ПК по этой статье.

Антивирус или брандмауэр может блокировать сетевые устройства

Если вашему антивирусу, или брандмауэру (фаерволу), который установлен на вашем компьютере что-то не понравилось, то он легко может сделать так, что ни вы не сможете видеть другие устройства в сетевом окружении, ни вас никто не сможет обнаружить.

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

Поэтому, попробуйте на время полностью остановить работу антивируса, или хотя бы отключить встроенный в него фаервол (межсетевой экран). В NOD 32 это делается вот так:

18-02-2018-12-26-37.jpg

Для проверки это нужно сделать на всех компьютерах, которые будут участвовать в локальной сети.

Вполне возможно, что у вас установлены еще какие-то программы, которые могут мониторить сеть и управлять сетевыми соединениями.

Если окажется, что проблема в антивирусе, то нужно добавить свою сеть в исключения. Запретить фаерволу блокировать саму сеть, или сетевые устройства.

Если у вас нет антивируса, то можно поэкспериментировать с отключением/включением брандмауэра встроенного в Windows.

Рабочая группа

Рабочая группа должна быть одинаковой на всех устройствах. Как правило, так и есть. Но желательно проверить. Для этого откройте свойства компьютера «Система» и перейдите в «Дополнительные параметры системы».

Там будет указана «Рабочая группа». Чтобы изменить ее, нужно нажать на кнопку «Изменить».

18-02-2018-12-39-54.jpg

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

Если у вас проблема с доступом к сетевому накопителю (к флешке через маршрутизатор), то в настройках общего доступа на том же роутере ASUS так же указана рабочая группа. Можете посмотреть на скриншоте выше в статье. Она должна быть такой же, как на компьютере.

Проблема с доступом к общей сетевой папке по SMB1 в Windows 10 (мое решение)

Вернемся конкретно к моей проблеме. Все что я описал выше, проверил и перепроверил уже по 10 раз. Пару раз сделал сброс сетевых настроек, но Windows 10 так и не видела другие компьютеры в сети и что самое главное – в проводнике так и не появлялась общая папка в виде флеши подключенной к роутеру. А на других устройствах в сети все определялось без проблем. В том числе мой ноутбук.

Где-то я прочитал, что можно попробовать открыть общую папку через окно «Выполнить». Нажал сочетание клавиш Win + R, ввел адрес сетевой папки //192.168.1.1 (он же адрес роутера).

Доступ к накопителю я не получил, но появилась интересная ошибка:

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

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

И ссылка, которую нужно вручную набирать 🙂

Вот она:

16-02-2018-19-54-01.jpg

Это уже интересно. Хоть что-то.

SMB (Server Message Block) – сетевой протокол, который отвечает за общий доступ к файлам, принтерам и другим сетевым устройствам.

Начал искать. И оказывается, что в Windows 10 отказались от протокола SMB1. Из-за безопасности. А установленный на моем роутере пакет программ Samba походу работает по протоколу SMB1. Поэтому Windows 10 его не видит. Но другие компьютеры, которые так же работают на Windows 10 у меня так же не отображались на вкладке «Сеть».

Так как обновить протокол к SMB2 в настройках роутера я не мог, то решил что нужно как-то включить поддержку SMB1 в Windows 10. И как оказалось, это без проблем можно сделать. В итоге, после подключения компонента «Клиент SMB 1.0/CIFS» у меня все заработало. Система увидела общие папки на компьютерах в сети и сетевую папку настроенную на самом роутере.

Как включить SMB1 в Windows 10?

Через поиск найдите и откройте старую «Панель управления».

18-02-2018-14-20-38.jpg

Переключитесь на «Мелкие значки» и откройте «Программы и компоненты».

18-02-2018-14-22-40.jpg

Открываем «Включение или отключение компонентов Windows». Находим пункт «Поддержка общего доступа к файлам SMB 1.0/CIFS». Открываем его и ставим галочку возле «Клиент SMB 1.0/CIFS». Нажимаем Ok.

18-02-2018-14-24-36.jpg

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

После перезагрузки, на вкладке «Сеть» – «Компьютер» должны появится все доступные устройства в вашей сети.

Буду рад, если эта статья кому-то пригодится и поможет решить возникшую проблему. Не забудьте написать в комментариях о результатах. Или задать вопрос, куда же без них 🙂

icon_comment.png 459 Сергейicon_category.pngРешение проблем и ошибокИспользуемые источники:

  • https://newadmin.ru/montirovanie-smb/
  • https://advicesos.com/zashchita/smb1.html
  • https://help-wifi.com/reshenie-problem-i-oshibok/ne-otobrazhayutsya-obshhie-papki-setevye-kompyutery-fleshki-diski-na-vkladke-set-provodnika-windows/

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации