Вопрос или проблема
У меня есть машина с Windows 10 (последнее обновление на 2016-10-10), которая совершенно отказывается получать доступ к общему ресурсу Samba на сервере Linux (Raspbian – производная Debian), без предварительного ввода учетных данных в Windows.
Клиент Windows 10
IP-адрес: 10.0.0.184
Не в домене.
Сервер Raspbian (Debian) Samba:
IP-адрес: 10.0.0.2
Не в домене.
smb.conf:
[global]
workgroup = WORKGROUP
server string = %h server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = share
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Введите\sновый\s*\пароль:* %n\n *Повторите\sновый\s*\пароль:* %n\n *пароль\sуспешно\sобновлён* .
pam password change = yes
map to guest = bad user
[public]
path = /home/public
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes
Это должно быть почти на 100% просто и понятно, верно?
Сценарий:
С машины с Windows 10 я пытаюсь получить доступ к серверу Samba:
\\10.0.0.2
Я получаю следующее сообщение об ошибке:
\\10.0.0.2 недоступен. У вас могут не быть прав для использования этого сетевого ресурса. Обратитесь к администратору этого сервера, чтобы узнать, есть ли у вас права доступа.
Указанная сессия входа не существует. Она могла быть уже завершена.
Совершенно бредово и совершенно абсурдно.
Лог Samba говорит:
[2016/10/14 19:10:55.209107, 0] smbd/service.c:995(make_connection_snum)
Не удается стать подключенным пользователем!
Итак, поскольку у меня был много плохих опытов (больше или меньше) с файловым обменом Windows в прошлом, я открываю Диспетчер учетных данных в Windows 10. Там я вставляю следующую новую запись в разделе Учетные данные Windows:
Интернет или сетевой адрес: 10.0.0.2
Имя пользователя: pi
Пароль: [правильный пароль]
Теперь, когда я пытаюсь получить доступ к серверу Samba с помощью \10.0.0.2, открывается окно проводника с видимой папкой “public”, как указано в конфигурационном файле smb.conf
.
И когда я пытаюсь открыть (публичный) ресурс, я могу его открыть, сохранить и удалить файлы и т.д. (Если я попробую создать новую папку, создается пять новых папок за секунду, но это проблема для другого дня.)
Тем не менее, это полностью противоречит самой сути публичного ресурса, поскольку мне необходимо ввести действительные учетные данные в Диспетчер учетных данных, чтобы это работало. Если учетных данных нет, то не только ресурс не работает, но и Windows даже не может ПОДКЛЮЧИТЬСЯ к серверу.
Есть идеи? Это всего лишь одна из нескольких проблем с файловым обменом в Windows 10, но, возможно, если я заставлю это работать, некоторые другие проблемы будут решены в процессе.
Поскольку мне нравится мучить себя и тратить часы своей жизни, я удалил и очистил Samba, перезагрузил (да, знаю), и снова его установил. Затем я удалил все ресурсы из файла по умолчанию и добавил только это:
[share_name]
browsable = yes
path = /home/public
guest ok = yes
read only = no
create mask = 777
Теперь, с или без (ненужных) учетных данных, хранящихся в Диспетчере учетных данных, я могу получить доступ к серверу Samba с той же ошибкой:
\\10.0.0.2 недоступен. У вас могут не быть прав для использования этого сетевого ресурса. Обратитесь к администратору этого сервера, чтобы узнать, есть ли у вас права доступа.
Указанная сессия входа не существует. Она могла быть уже завершена.
Вот что говорит файл log.smbd
:
[2016/10/14 21:06:27.956914, 0] lib/util_sock.c:605(open_socket_in)
open_socket_in(): ошибка вызова socket(): Семейство адресов не поддерживается протоколом
[2016/10/14 21:06:27.958765, 0] smbd/server.c:578(smbd_open_one_socket)
smbd_open_once_socket: open_socket_in: Семейство адресов не поддерживается протоколом
[2016/10/14 21:06:27.997747, 0] printing/print_cups.c:110(cups_connect)
Не удалось подключиться к серверу CUPS localhost:631 - Подключение отклонено
[2016/10/14 21:06:28.011317, 0] lib/util_sock.c:605(open_socket_in)
open_socket_in(): ошибка вызова socket(): Семейство адресов не поддерживается протоколом
[2016/10/14 21:06:28.012127, 0] smbd/server.c:578(smbd_open_one_socket)
smbd_open_once_socket: open_socket_in: Семейство адресов не поддерживается протоколом
[2016/10/14 21:06:28.015107, 0] printing/print_cups.c:487(cups_async_callback)
не удалось получить список принтеров: NT_STATUS_UNSUCCESSFUL
Я знаю, что Samba используется во многих профессиональных бизнес-организациях. Как же они заставляют это работать? Эти ошибки совершенно нелепы и не подвластны разуму!
Клиент Windows 10 требует дополнительных вызовов, которые должен обрабатывать сервер SMB. Я не знаю, поддерживает ли Samba их. Несколько других серверов SMB поддерживают Windows 10 и Windows 2016.
Ответ или решение
Проблемы подключения к общему ресурсу Samba из Windows 10
Одной из распространенных задач при работе с сетями является подключение к общим ресурсам Samba из операционной системы Windows 10. В данном обзоре мы подробно рассмотрим основные проблемы, с которыми сталкиваются пользователи при попытке доступа к общим ресурсам Samba, а также предложим решения для их устранения.
1. Контекст проблемы
Предположим, у вас есть клиентская машина на базе Windows 10 (IP-адрес: 10.0.0.184), которая не может получить доступ к общему ресурсу Samba на сервере с Linux (Raspbian, IP-адрес: 10.0.0.2). Несмотря на то, что конфигурация Samba выглядит корректной, клиенту необходимо вводить учетные данные для доступа к публичной папке.
2. Анализ конфигурации Samba
Давайте взглянем на конфигурацию Samba, представленную в файле smb.conf
:
[global]
workgroup = WORKGROUP
security = share
map to guest = bad user
[public]
path = /home/public
browsable = yes
guest ok = yes
writable = yes
- Параметр
security = share
указывает, что доступ к ресурсам осуществляется на основе прав доступа к папкам Samba, а не на основе пользовательских учетных записей. - Параметр
guest ok = yes
позволяет гостевым пользователям (без аутентификации) получить доступ к папкеpublic
.
Несмотря на это, клиент Windows 10 может не всегда корректно обрабатывать подключение к публичным ресурсам, что зачастую связано с особенностями аутентификации в новых версиях Windows.
3. Решения
3.1. Настройки Windows
-
Изменение параметров сети: Убедитесь, что сетевой профиль Windows установлен в "Частная сеть". Это позволит Windows 10 лучше взаимодействовать с местными сетями и выделенными ресурсами SMB.
-
Изменение параметров общего доступа: Перейдите в
Панель управления -> Центр управления сетями и общим доступом -> Изменить дополнительные параметры общего доступа
и убедитесь, что параметры для "Общедоступной папки" и "Общего доступа с паролем" находятся в правильном состоянии (например, отключите доступ с паролем для тестирования). -
Включение SMB 1.0/CIFS: В некоторых случаях для совместимости с Samba может понадобиться включить поддержку SMB 1.0. Перейдите в
Панель управления -> Программы и компоненты -> Включение или отключение компонентов Windows
и активируйте соответствующий флажок.
3.2. Конфигурация Samba
-
Проверка версий Samba: Убедитесь, что используется последняя версия Samba, которая поддерживает более современные протоколы SMB (например, SMB 2.0 и выше).
-
Добавление настроек для совместимости с Windows 10: В секцию
[global]
добавьте следующие строки:server min protocol = NT1 server max protocol = SMB3
Эти параметры позволят серверу Samba обслуживать соединения по SMB1 и SMB3, что улучшит совместимость с Windows 10.
-
Проверка прав доступа к папке: Убедитесь, что у пользователя
pi
и у группы, к которой он принадлежит, есть соответствующие права на уровне файловой системы к папке/home/public
.
3.3. Логи и отладка
Обратите внимание на логи Samba. Ошибки, такие как "Can’t become connected user" и "Address family not supported by protocol", могут указывать на проблемы с настройками. Убедитесь, что Samba настроена на использование соответствующих сетевых протоколов и что нет конфликтующих правил firewall.
4. Заключение
Подключение к публичному ресурсу Samba из Windows 10 может представлять определенные трудности, включая аутентификацию и сетевые проблемы. Однако, следуя вышеуказанным рекомендациям, вы сможете устранить большинство распространенных проблем. Если ни одно из предложенных решений не поможет, будет разумно рассмотреть возможность использования другого программного обеспечения для обработки файлов и сетевых подключений, что может облегчить совместимость и доступ пользователей.