Это руководство предназначено для пользователей Windows 10, которые не видят другие компьютеры Ubuntu в проводнике Windows, но могут получить к ним прямой доступ по сетевому пути, используя имя хоста (\\hostname\share) или IP (\\192.168.1.10\share).
Вам потребуются привилегии sudo на компьютере с Ubuntu для установки службы wsdd.
Вы также должны убедиться, что Samba уже установлена и работает в Ubuntu. Вы можете узнать, проверив сервис с помощью:
sudo systemctl status smbd
Если не установлен, установите с помощью:
sudo apt update && sudo apt install samba
Проблема с Ubuntu 22.04 и сетевым обнаружением Windows 10
SMB 1.0 (SMBv1)
Несколько руководств и видеороликов на YouTube, предлагают вручную включить SMB 1.0 в Windows 10, чтобы сделать другие машины Ubuntu видимыми в проводнике Windows. Хотя это может работать в более старых выпусках Windows 10, это не рекомендуется из-за последствий для безопасности.
От Майкрософт:
“Hi folks, Ned here again and today’s topic is short and sweet: Stop using SMB1. Stop using SMB1 . STOP USING SMB1!” source
В Windows 10 версии 1511 поддержка SMBv1 и, следовательно, обнаружение устройств NetBIOS были отключены по умолчанию. В зависимости от фактического выпуска, более поздние версии Windows, начиная с версии 1709 («Fall Creators Update»), больше не позволяют устанавливать клиент SMBv1.
Это приводит к тому, что хосты, на которых работает Samba, не отображаются в резделе «Сетевое окружение» проводника. Хотя проблем с подключением нет и Samba по-прежнему будет работать нормально, пользователи могут захотеть, чтобы их хосты Samba автоматически отображались в списке Windows.
mDNS
Ubuntu 22.04 автоматически регистрирует ваш сервер samba в остальной части сети, используя mDNS (Avahi). Все другие машины Linux, а также macOS могут автоматически обнаружить эту регистрацию.
Причина, по которой Windows 10 не может обнаружить сетевые ресурсы Ubuntu, заключается в том, что, Windows может использовать mDNS, но не знает, как автоматически сканировать сеть на их наличие.
WSD
Веб-службы для устройств (WSD) — это API Microsoft, позволяющий программировать подключения к устройствам с поддержкой веб-служб, таким как принтеры, сканеры и общие файловые ресурсы. Он служит заменой старых сетевых функций Windows, таких как NetBIOS.
С добавлением службы WSD в Ubuntu Windows 10 обнаружит сервер Linux Samba, используя собственный протокол WSD.
Почему Ubuntu изначально не поддерживает WSD?
Эта проблема поднималась в системе отслеживания ошибок Samba с 2015 года. Так что может случиться так, что эта функция будет интегрирована в Samba в будущем. Но пока мы должны вручную установить патч самостоятельно.
Установка WSD в Ubuntu
wsdd — это сервис от christgau на GitHub, который реализует хост-демон Web Service Discovery для Ubuntu. Это позволяет клиентам обнаружения веб-служб, таким как Windows 10, находить хосты Samba.
Перейдите в каталог /tmp
cd /tmp
Скачайте и разархивируйте архив
wget https://github.com/christgau/wsdd/archive/master.zip
unzip master.zip
Переименуйте wsdd.py в wsdd
sudo mv wsdd-master/src/wsdd.py wsdd-master/src/wsdd
Скопируйте в /usr/bin
sudo cp wsdd-master/src/wsdd /usr/bin
Скопируйте wsdd в /etc/systemd/system
sudo cp wsdd-master/etc/systemd/wsdd.service /etc/systemd/system
Откройте wsdd.service в nano и закомментируйте User=nobody и Group=nobody с помощью ; точка с запятой.
sudo nano /etc/systemd/system/wsdd.service
[Unit]
Description=Web Services Dynamic Discovery host daemon
Documentation=man:wsdd(8)
; Start after the network has been configured
After=network-online.target
Wants=network-online.target
; It makes sense to have Samba running when wsdd starts, but is not required.
; Thus, the next to lines are disabled and use BindsTo only.
; One may also add any of these services to After for stronger binding.
;BindsTo=smb.service
;BindsTo=samba.service
[Service]
Type=simple
;EnvironmentFile=/etc/default/wsdd
; The service is put into an empty runtime directory chroot,
; i.e. the runtime directory which usually resides under /run
;ExecStart=/usr/bin/wsdd --shortlog --chroot=/run/wsdd $WSDD_PARAMS
ExecStart=/usr/bin/wsdd --shortlog
;DynamicUser=yes
; User=nobody
; Group=nobody
;RuntimeDirectory=wsdd
;AmbientCapabilities=CAP_SYS_CHROOT
[Install]
WantedBy=multi-user.target
Сохраните и выйдите (нажмите CTRL + X, нажмите Y, а затем нажмите ENTER)
Перезагрузите
sudo systemctl daemon-reload
Запустите и включите wsdd
sudo systemctl start wsdd
sudo systemctl enable wsdd
Должно получится так:
Created symlink /etc/systemd/system/multi-user.target.wants/wsdd.service → /etc/systemd/system/wsdd.service.
Теперь проверьте, запущена ли служба
sudo service wsdd status
Вывод:
● wsdd.service - Web Services Dynamic Discovery host daemon
Loaded: loaded (/etc/systemd/system/wsdd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-09-06 20:52:23 EEST; 9h ago
Docs: man:wsdd(8)
Main PID: 762 (python3)
Tasks: 1 (limit: 6909)
Memory: 17.7M
CPU: 300ms
CGroup: /system.slice/wsdd.service
└─762 python3 /usr/bin/wsdd --shortlog
Sep 06 20:52:23 homeserver systemd[1]: Started Web Services Dynamic Discovery host daemon.
Sep 06 20:52:25 homeserver wsdd[762]: WARNING: no interface given, using all interfaces
Теперь Вы сможете просматривать свои машины Ubuntu и общие ресурсы Samba в проводнике Windows 10. Возможно, вам придется перезагрузить компьютеры с Windows 10, чтобы принудительно обнаружить их.
Вы также можете перезагрузить сервер Ubuntu, чтобы убедиться, что служба wsdd запускается автоматически без проблем.
Как удалить wsdd
Если вы хотите полностью удалить wsdd, остановите и отключите службу
sudo systemctl stop wsdd
sudo systemctl disable wsdd
Удалите wsdd из /usr/bin
sudo rm /usr/bin/wsdd
Удалить файл службы
sudo rm /etc/systemd/system/wsdd.service