Samba linux windows не может получить доступ

Эта статья по сути будет подборкой «Best practiсe» для системных администраторов Samba. Основой статьи является глава Troubleshooting Techniques из книги Sam’s T...

Эта статья по сути будет подборкой «Best practiсe» для системных администраторов Samba. Основой статьи является глава Troubleshooting Techniques из книги Sam’s Teach Yourself Samba in 24 Hours. Мы постараемся рассмотреть наиболее распространенные ошибки при настройке Samba.

Согласитесь, ужасно поменять двигатель в машине, а потом выяснить, что не ехала она из-за отсутствия бензина! Может, это и не лучшая метафора, но многие системные администраторы тратят время зря, не проверив в первую очередь самые очевидные вещи. Посмотрите, как примерно должен выстраиваться процесс поиска и решения проблем с Samba:

Проблемы, представленные на нижних уровнях этой «пирамиды», являются «фундаментом» для более высоких уровней. Не удивительно, что Windows-клиент не может получить доступ к файловому северу на Samba, если сервер отключен от сети. Конечно, не стоит воспринимать этот рисунок буквально, как руководство к действию (скажем, лог-файлы можно посмотреть всегда), но начинать стоит все-таки с проблем нижних уровней. Чем выше мы поднимаемся, тем больше углубляемся в принципы работы Samba.
В поисках решения проблемы с Samba стоит в первую очередь обратиться к следующим ресурсам:
•HOWTO, опубликованные на сайте;
•тематические сайты и форумы, например: http://samba-doc.ru/, http://citforum.ru/operating_systems/linux/samba/;
•разделы документации по Samba для того или иного дистрибутива (например, http://help.ubuntu.ru/wiki/samba, http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-samba.html или http://wiki.russianfedora.ru/index.php?title=Samba);
•http://stackoverflow.com/ — не забывайте про этот сайт, если у вас есть конкретный вопрос или проблема;
•вспомогательные утилиты, входящие в состав Samba, а также различные программы-анализаторы трафика (например, Wireshark).
Мы в первую очередь рассмотрим самостоятельное решение возникающих проблем, но не стоит забывать про возможную помощь сообщества. Это может серьезно сэкономить вам время и силы.

Описание тестовой среды
Для начала — несколько слов о тестовой среде. Условия следующие:
Samba-сервер называется TROUBLE и имеет IP-адрес 192.168.7.75 и маску 255.255.255.0.
smbd и nmbd запускаются как демоны.
•Windows-клиент называется win-client.
•Windows-клиент использует адрес 192.168.7.135 с сетевой маской 255.255.255.0.
•И win-client, и TROUBLE находятся в одной подсети, так что широковещательный запрос дойдет с одного хоста на другой.
•И win-client, и TROUBLE являются членами рабочей группы LAB.
•Samba-сервер использует следуюший smb.conf:

[global] netbios name = TROUBLE 
workgroup = LAB security = user encrypt passwords = yes 
[public] path = /tmp 
read only = no 
УРОВЕНЬ 1

Работоспособность сетевого соединения и файла конфигурации

Основание нашей «пирамиды» составляют три основных проблемы:
•корректно работающее TCP/IP подключение;
•соответствие маски и широковещательных адресов на серверах и клиентах;
•работоспособность файла smb.conf.

TCP/IP
Для проверки TCP/IP в первую очередь используется команда ping. Если описать протокол ICMP очень упрощенно, то хост отправляет запрос на сервер и спрашивает «Ты жив?». Если сервер не отвечает, хост приходит к выводу, что тот не подключен к сети и, следовательно, недоступен.

$ ping win-client
PING win-client (192.168.7.135) from 192.168.1.74 : 56(84) bytes of data. 
64 bytes from win-client (192.168.7.135): icmp_seq=0 ttl=255 time=2.138 msec 
64 bytes from win-client (192.168.7.135): icmp_seq=1 ttl=255 time=2.181 msec 
64 bytes from win-client (192.168.7.135): icmp_seq=2 ttl=255 time=2.263 msec 
--- ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max/mdev = 2.138/2.194/2.263/0.051 ms 

Также очень важным является правильное функционирование DNS. Если не удастся разрешить имя, появится сообщение вроде этого:

$ ping win-client
ping: unknown host win-client

Если такое происходит, первое, что стоит сделать — это повторить команду ping, но используя уже не имя, а адрес:

$ ping 192.168.7.135

Если команда выполнится успешно, то стоит обратить внимание на конфигурацию DNS. Наиболее распространенные причины ошибки:
•неверное содержание файла конфигурации DNS /etc/resolv.conf;
•на сервере DNS нет записи, связанной с win-client;
•сервер DNS недоступен в данный момент.
Если же ping по IP-адресу успешно не выполняется, то стоит проверить работоспособность сетевого оборудования на сервере, клиенте и между ними.

Широковещательный адрес на сервере и клиенте
Возможно, ping выполнится и успешно, но при этом сетевая маска (netmask) и широковещательный адрес (broadcast address) будут сконфигурированы неверно.
В NetBIOS крайне важно для правильного разрешения имени и поиска машин в сетевом окружении, чтобы сервер и клиент находились в одной подсети, т.е. использовали одну маску подсети и широковещательный адрес.
В нашем случае сетевая маска должна быть 255.255.255.0, а широковещательный адрес — 192.168.7.255.
Если вы используете Linux, то можно проверить, какие используются широковещательный адрес и маска, при помощи команды ifconfig с именем интерфейса в качестве аргумента:

$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:04:5A:0C:1C:19 
inet addr:192.168.7.75 Bcast:192.168.255.255 Mask:255.255.255.0 
inet6 addr: fe80::204:5aff:fe0c:1c19/10 Scope:Link 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:68006 errors:0 dropped:0 overruns:0 frame:0 
TX packets:100783 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:100 
RX bytes:12186135 (11.6 Mb) TX bytes:121642120 (116.0 Mb) 
Interrupt:3 Base address:0x100 
1

Если в выводе этой команды вы увидите, что широковещательный адрес или сетевая маска заданы неверно, следует зайти под учетной записью root и установить верные значения, используя команду ifconfig:

root# ifconfig eth0 192.168.7.75 netmask 255.255.255.0 broadcast 192.168.7.255

В Windows аналогичную информацию можно получить информацию, выполнив команду ipconfig /all.

Проверка корректности файла smb.conf
Так как Samba использует огромное количество параметров из файла smb.conf, разработчики создали утилиту командной строки, которая проверяет синтаксис этого файла. Утилита называется testparm, она очень полезна при поиске ошибок в конфигурационном файле.
Можно использовать утилиту testparm с параметром -s для анализа конкретного конфигурационного файла. Эта опция очень хорошо подходит для проверки файла конфигурации перед его «боевым» использованием.

$ testparm -s /usr/local/samba/lib/smb.conf.new 
Load smb config files from /usr/local/samba/lib/smb.conf.new 
Processing section “[public]” 
Loaded services file OK. 
# Global parameters 
[global] 
coding system = 
client code page = 850 
code page directory = /usr/local/samba/lib/codepages 
<...остальной вывод опущен...>

После анализа заданного конфигурационного файла testparm выводит все значения файла smb.conf, включая значения по умолчанию. Это помогает убедиться, что используются ожидаемые значения параметров конфигурации smbd и nmbd.
Стоит отметить, что значения по умолчанию меняются от версии к версии, так что необходимо использовать версию Samba, соответствующую версии testparm.

УРОВЕНЬ 2

Серверное и клиентское ПО

Второй уровень подразумевает проверку конфигурации клиентского и серверного ПО. Наша цель — убедиться, что и клиент, и сервер корректно отвечают на запросы NetBIOS и CIFS. Пока мы рассматриваем изолированно каждый из хостов. (На третьем уровне мы уже начнем рассматривать их взаимодействие.)

smbd
В первую очередь, smbd должен быть запущен. Проверить это можно, используя команду ps. Аргументы этой команды могут отличаться в зависимости от версии Linux.

$ ps -ef | grep smbd
 root 28592 1 0 12:37 ? 00:00:00 /usr/local/samba/bin/smbd -D

Убедившись, что smbd запущен (или, при необходимости, запустив его), используем утилиту smbclient для проверки работоспособности сервера. Параметр -L используется для вывода списка ресурсов сервера. Ключ -N используется для анонимного подключения к серверу, чтобы не создавать лишних проблем с авторизацией. Все эти действия должны выполняться локально на Samba-сервере.

smbclient -L TROUBLE -N added interface ip=192.168.7.75 bcast=192.168.1.255 nmask=255.255.255.0 Anonymous login successful Domain=[LAB] OS=[Unix] Server=[Samba 2.2.2] 
Sharename Type --------- ---- public Disk IPC$ IPC 
Comment ------- 
IPC Service (Samba 2.2.2) 
smbclient -L TROUBLE -N added interface ip=192.168.7.75 bcast=192.168.1.255 nmask=255.255.255.0 Anonymous login successful Domain=[LAB] OS=[Unix] Server=[Samba 2.2.2] 
Sharename Type --------- ---- public Disk IPC$ IPC 
Comment ------- 
IPC Service (Samba 2.2.2) 
ADMIN$ 
Server --------- TROUBLE 
Workgroup --------- LAB 
Disk 
IPC Service (Samba 2.2.2) 
Comment ------- Samba 2.2.2 
Master ------- TROUBLE 

Существуют две распространенные ошибки, которые могут возникнуть при выполнении этой проверки.
Первая ошибка выглядит следующим образом:

error connecting to 192.168.7.75:139 (Connection refused) Connection to <server> failed

Она возникает, если smbd не запущен или не может подключиться к порту 139. Причиной этому могут быть ранее установленные и некорректно удаленные компоненты Samba. Прежде всего следует убедиться, что smbd стартует как демон и не завершается тут же с ошибкой. Особенность в том, что nmbd не выводит ошибки в консольное окно, так что следует посмотреть последние несколько строк log-файла. Позже мы рассмотрим анализ логов более подробно.
Вторая часто встречающаяся ошибка выглядит так:

session request to <server> failed (Not listening for calling name)

Можно подумать, что причиной этой ошибки является неверное NetBIOS-имя, но это не так. Эта ошибка не может быть вызвана «битой» установкой nmbd, nmbd в данном случае даже не обязательно должен быть запущен.
Причиной возникновения этой ошибки при локальном подключении чаще всего являются неверно сконфигурированные параметры hosts allow или hosts deny в файле smb.conf. Сервер разрывает создающуюся NetBIOS-сессию.
Если нам удалось увидеть список общих ресурсов, мы можем проверить возможность Samba авторизовать пользователей. В этом тесте аккаунт с именем пользователя user1 и паролем secret подключается к общему ресурсу [public].

$ smbclient //TROUBLE/public -U user1%secret added interface ip=192.168.7.75 bcast=192.168.1.255 nmask=255.255.255.0 Domain=[LAB] OS=[Unix] Server=[Samba 2.2.2] smb: > 

Если Samba не сможет авторизовать пользователя, вы увидите сообщение об ошибке:

session setup failed: ERRSRV - ERRbadpw (Bad password - name/password pair in a Tree Connect or Session Setup are invalid.) 

Причин этой ошибки может быть много. Это может быть неверное имя или пароль, или отсутствующая запись smbpasswd для пользователя, если задан параметр encrypt password = yes, или недействительная учетная запись guest, если разрешен доступ без аутентификации.
Если пользователь корректно авторизовался, но не смог получить доступ к запрошенной службе, smbclient выведет следующее сообщение:

tree connect failed: ERRDOS - ERRnosuchshare (You specified an invalid share name) 

Это может быть вызвано неверно написанным именем службы, настройками доступа к общему ресурсу или неверным выражением path в описании общего ресурса в файле smb.conf.

nmbd
Чтобы проверить, запущен ли nmbd, мы снова используем команду ps.

$ ps -ef | grep nmbd 
root 29054 1 0 15:53 ? 00:00:00 /usr/local/samba/bin/bin/nmbd -D 

Если ps покажет, что nmbd не запущен, стоит зайти под учетной записью root и запустить его (/usr/local/samba/bin/nmbd -D).
Для теста мы будем использовать утилиту Sambanmblookup. У каждого Samba-сервера есть особое имя, _Samba_, на которое они откликаются всегда. Послав запрос по этому имени, мы можем проверить работоспособность nmbd. Ключ -U используется для того, чтобы отправить запрос на конкретный адрес.

$ ./nmblookup -U 127.0.0.1 __Samba__ querying __Samba__ on 127.0.0.1 192.168.7.75 __Samba__<00>

Если nmbd при этом не запущен, результатом будет ошибка:

name_query failed to find name __Samba__

Также причиной ошибки может быть тот факт, что loopback-интерфейс не включен в smb.conf при включенном параметре bind interfaces only = yes.
После этого мы проверим, может ли nmbd зарегистрировать имя TROUBLE.

$ nmblookup -U 127.0.0.1 TROUBLE querying TROUBLE on 127.0.0.1 192.168.7.75 TROUBLE<00>

Сообщения об ошибках, например, “name query failed”, скорее всего, вызваны неудачным запросом к имени _Samba_. Другой причиной может быть то, что сервер не может зарегистрировать имя NetBIOS. В этом случае стоит найти сервер, которому принадлежит данное имя, отправив широковещательный запрос.

$ nmblookup -B 192.168.1.255 TROUBLE querying TROUBLE on 192.168.1.255 192.168.1.98 TROUBLE<00> ошибка

Например, в данном случае это имя принадлежит сторонней машине, а не нашему Samba-серверу. Очевидно, решением данной проблемы является переименование этой машины или сервера.

NetBIOS-интерфейс Windows

Утилита, использующаяся в Windows для NetBIOS-запросов — nbtstat.exe — имеет еще несколько опций, которых нет в nmblookup. Одна из них (-n) позволяет «спросить» у NetBIOS-интерфейса, какие имена он успешно зарегистрировал:

C:WINDOWS> nbtstat -n 
Node IpAddress: [192.168.7.135] Scope Id: [] NetBIOS Local Name Table 
Name Type Status --------------------------------------------- 
WIN-CLIENT LAB WIN-CLIENT 
<00> UNIQUE <00> GROUP <03> UNIQUE 
Registered Registered Registered 

Если компонент “Client for Microsoft Networks” не был установлен, nbtstat.exe сообщит следующее:

Failed to access NBT driver 1

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

Name Type Status --------------------------------------------- LAB <00> GROUP Registered

Часто причиной этого является наличие машины с таким же NetBIOS-именем. Windows-клиенту необходимо уникальное имя, чтобы установить NetBIOS-сессию с сервером. Пока клиент не сможет зарегистрировать имя рабочей станции, он будет неспособен, скажем, просматривать сетевое окружение или подключать сетевые диски.

УРОВЕНЬ 3

Удаленный доступ к общим ресурсам

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

Разрешение имен
Мы вновь будем использовать утилиты nmblookup и nbstat.exe, чтобы выяснить, может ли клиент разрешить имя сервера и наоборот. Тест будет состоять из двух фаз. В первой мы будем использовать широковещательный запрос, чтобы протестировать отклики сервера и клиента. Это делается путем задания широковещательного адреса (-B 192.168.7.255) в утилите nmblookup при запросе, что задействует сетевое взаимодействие между сервером и клиентом.
Сначала мы попробуем разрешить имя сервера:

$ nmblookup -B 192.168.1.255 TROUBLE querying TROUBLE on 192.168.1.255 192.168.7.75 TROUBLE<00>

После этого мы попробуем разрешить имя клиента, используя тот же широковещательный адрес.

$ nmblookup -B 192.168.1.255 win-client querying win-client on 192.168.1.255 192.168.7.135 win-client<00>

Если до сих пор все шло хорошо, этот тест, скорее всего, отработает корректно. Если же результатом будет ошибка, стоит еще раз поверить соответствие широковещательного адреса на всех машинах.
После этого мы выполним NetBIOS Node Status Lookup, проверим статус узла. На этом шаге делается прямое обращение к IP-адресу, в котором запрашивается список уникальных и групповых NeBIOS имен, зарегистрированных этим хостом. Начнем с запроса к Samba-серверу от Windows-клиента.

C:WINDOWS> nbtstat -A 192.168.7.75 
NetBIOS Remote Machine Name Table 
Name Type Status --------------------------------------------- 
TROUBLE <00> UNIQUE TROUBLE <03> UNIQUE TROUBLE <20> UNIQUE ..__MSBROWSE__.<01> GROUP 
Registered Registered Registered Registered Registered Registered Registered 
LAB LAB LAB 
<00> GROUP <1D> UNIQUE <1E> GROUP 
MAC Address = 00-00-00-00-00-00 

Можно выполнить те же действия на Samba-сервере, чтобы собрать информацию о клиенте. Опции для запроса через утилиту nmblookup, в целом, такие же как и в nbtstat.exe.

$ nmblookup -A 192.168.7.135 Looking up status of 192.168.7.135 
WIN-CLIENT LAB WIN-CLIENT 
<00> - B <ACTIVE> <00> - <GROUP> B <ACTIVE> <03> - B <ACTIVE> 

Если какой-то из этих запросов не выполняется, следует еще раз провести проверки сетевого подключения и NetBIOS-интерфейсов, которые мы рассматривали раньше.

Просмотр общих ресурсов с Windows-клиента
Мы уже использовали smbclient для просмотра списка общих ресурсов. Здесь мы проделаем то же самое, только удаленно с Windows-клиента.
Утилита net.exe — это универсальная утилита для работы с CIFS. Эта утилита является эквивалентом Linux-команды smbclient -L. Опиция view позволяет просмотреть общие ресурсы рабочей группы, или, если указать конкретное имя сервера (например, \TROUBLE), покажет список общих ресурсов на нем.

Удаленное подключение к общим ресурсам
На самом деле, этот шаг является не столько тестом, сколько целью всего процесса. Если мы зашли в консоль с правильным именем и паролем, то следующая команда подключит диск P: локального клиента к общему ресурсу [public] на сервере TROUBLE.

C:WINDOWS> net use p: \TROUBLEpublic
The command completed successfully. 

Чтобы определить, под каким именем подключаться, можно использовать опцию

/user::
C:WINNT>net use \TROUBLEpublic /user:user1 The password or user name is invalid for \TROUBLEpublic. Type the password for \TROUBLEpublic: The command completed successfully.

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

УРОВЕНЬ 4

Сетевое окружение

Решение проблем с корректной работой Сетевого окружения — очень сложная тема. Скорее всего, если вы добрались до этого уровня, а сетевое окружение не работает или работает некорректно, вам следует еще раз проверить маску подсети и широковещательный адрес, и снова повторить все тесты нижних уровней: ошибка вероятно кроется там.

УРОВЕНЬ 5

Лог-файлы и анализ трафика

Иногда корень проблемы сложно определить даже с помощью специализированных диагностических утилит. Тогда на помощь приходят логи. Первые четыре уровня нашей «пирамиды» можно использовать для подтверждения правильности начальной установки Samba и решения простых проблем. Начиная с пятого уровня, начинается решение серьезных проблем. Рано или поздно вы столкнетесь с проблемой, которая потребует работы с логами.

Лог-файлы Samba
Ниже приведена таблица, в которой описаны уровни детализации логов.

Чтобы узнать текущий уровень логирования smbd (например, с pid 1234), выполним следующую команду из-под учетной записи root:

root# smbcontrol 1234 debuglevel 
Current debug level of PID 1234 is 0

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

root# smbcontrol 1234 debug 10 
root# smbcontrol 1234 debuglevel 
Current debug level of PID 1234 is 10

Следующий вопрос: «Что же делать с логами?»
Вот пример, в котором логи помогли решению проблемы. Мы пробуем подключиться с Windows-клиента к общему дисковому ресурсу. Однако smbd не принимает пароль для соединения. Когда мы используем smbclient для теста, мы получаем ошибку:

$ smbclient //TROUBLE/public -U testuser%test
session setup failed: ERRSRV - ERRbadpw (Bad password - name/password pair in a Tree Connect or Session Setup are invalid.) 

Мы совершенно уверены, что значение smbpasswd верно, и пароль — test. Попробуем подключиться еще раз, добавив

log level = 10 log file = /usr/local/samba/var/log.%m

в секцию [global] файла smb.conf, и мы увидим новые строчки в файле log.TROUBLE:

pdb_getsampwnam: search by name: testuser startsmbfilepwent_internal: opening file /usr/local/samba/private/smbpasswd getsmbfilepwent: returning passwd entry for user root, uid 0 getsmbfilepwent: returning passwd entry for user jerry, uid 786 getsmbfilepwent: returning passwd entry for user guest1, uid 782 getsmbfilepwent: returning passwd entry for user testuser, uid 791 endsmbfilepwent_internal: closed password file. pdb_getsampwnam: found by name: testuser build_sam_account: smbpasswd database is corrupt! username testuser 
not in unix passwd database! Couldn’t find user ‘testuser’ in passdb. 

Последняя строка и есть ответ на наш вопрос. Samba не смогла найти учетную запись testuser. А это произошло, так как кто-то закомментировал строку в файле /etc/passwd:

#testuser:x:791:100::/dev/null:/bin/false

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

$ smbclient //TROUBLE/public -U testuser%test Domain=[LAB] OS=[Unix] Server=[Samba 2.2.2] smb: >

Это всего лишь один пример. Вывод в логах может быть запутанным, но можно использовать grep, чтобы находить следующие ключевые слова:
• fail
• error
• unsuccessful
• corrupt
• unknown

Мониторинг сетевого трафика
Еще один способ найти корень проблемы — это просматривать содержимое пакетов, ходящих по сети между сервером и клиентом. Для этого можно использовать такие программы-анализаторы, как Wireshark. С их помощью можно просмотреть и проанализировать в достаточно читаемом виде содержимое пакетов.

УРОВЕНЬ 6

Внутренние проблемы Samba

Если ничего из вышеприведенного не помогло — возможно, вы столкнулись с каким-либо багом Samba. Список известных можно посмотреть на официальном сайте. Чтобы свести к минимуму вероятность появления подобного рода проблем, используйте актуальную и стабильную версию Samba, а также следите за выходом исправлений: исправляются разведанные баги достаточно быстро.

Заключение

Итак, мы разобрали методологию поиска и решения проблем Samba. Проблемы были разнесены по уровням, и каждый уровень зависит от успешной работоспособности более низкого уровня. Еще раз взглянем на них:
•Уровень 1. Сетевое соединение и работоспособный smb.conf.
•Уровень 2. Серверное и клиентское ПО.
•Уровень 3. Удаленный доступ к ресурсам.
•Уровень 4. Сетевое окружение.
•Уровень 5. Логи и анализ трафика.
•Уровень 6. Внутренние проблемы Samba.
Не стоит забывать, что, возможно, с вашей проблемой уже кто-то сталкивался. В этом случае просмотр профильных форумов и других ресурсов может вам сэкономить драгоценное время. Не зацикливайтесь на единственно возможной по вашему мнению причине. Постарайтесь посмотреть на проблему с другой точки зрения. В конце концов решение любой проблемы может быть найдено!

Если вы из Windows 10 или 11 не можете открыть сетевые папки на других сетевых устройствах (NAS, Samba сервера Linux) или на компьютерах со старыми версиями Windows (Windows 7/ XP /2003), скорее всего проблема связана с тем, что в вашей версии Windows отключена поддержка устаревших и небезопасных версий протокола SMB (используется в Windows для доступа к общим сетевым папкам и файлам). В современных версиях Windows 10 и в Windows 11 по-умолчанию отключен протокол SMBv1 и анонимный (гостевой) доступ к сетевым папкам по протоколу SMBv2 и SMBv3.

Microsoft планомерно отключает старые и небезопасные версии протокола SMB во всех последний версиях Windows. Начиная с Windows 10 1709 и Windows Server 2019 (как в Datacenter так и в Standard редакциях) в операционной системе по умолчанию отключен протокол SMBv1 (помните атаку шифровальщика WannaCry, которая как раз и реализовалась через дыру в SMBv1).

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

Содержание:

  • Вы не можете получить гостевой доступ к общей папке без проверки подлинности
  • Вашей системе необходимо использовать SMB2 или более позднюю
  • Нет доступа к сетевой папке, у вас нет прав доступа
  • Дополнительные способы проверки доступа к сетевой папке в Windows

Вы не можете получить гостевой доступ к общей папке без проверки подлинности

Начиная с версии Windows 10 1709 (Fall Creators Update) Enterprise и Education пользователи стали жаловаться, что при попытке открыть сетевую папку на соседнем компьютере стала появляться ошибка:

Вы не можете получить доступ к этой общей папке, так как политики безопасности вашей организации блокируют гостевой доступ без проверки подлинности. Эти политики помогают защитить ваш компьютер от небезопасных или вредоносных устройств в сети.
An error occurred while reconnecting Y: to
\nas1share Microsoft Windows Network: You can’t access this shared folder because your organization’s security policies block unauthenticated guest access. These policies help protect your PC from unsafe or malicious devices on the network.

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

При этом на других компьютерах со старыми версиями Windows 8.1/7 или на Windows 10 с билдом до 1709, эти же сетевые каталоги открываются нормально. Причина в том, что в современных билдах Windows 10 (начиная с 1709) по умолчанию запрещен сетевой доступ к сетевым папкам под гостевой учетной записью по протоколу SMBv2 (и ниже). Гостевой (анонимный) доступ подразумевают доступ к сетевой папке без аутентификации. При доступе под гостевым аккаунтом по протоколу SMBv1/v2 не применяются такие методы защиты трафика, как SMB подписывание и шифрование, что делает вашу сессию уязвимой против MiTM (man-in-the-middle) атак.

При попытке открыть сетевую папку под гостем по протоколу SMB2, в журнале клиента SMB (Microsoft-Windows-SMBClient) фиксируется ошибка:

Log Name: Microsoft-Windows-SmbClient/Security Source: Microsoft-Windows-SMBClient Event ID: 31017  

Rejected an insecure guest logon.

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

Чаще всего с этой проблемой можно столкнуться при использовании старых версий NAS (обычно для простоты настройки на них включают гостевой доступ) или при доступе к сетевым папкам на старых версиях Windows 7/2008 R2 или Windows XP /2003 с настроенным анонимным (гостевым) доступом (см. таблицу поддерживаемых версий SMB в разных версиях Windows).

Microsoft рекомендует изменить настройки на удаленном компьютере или NAS устройстве, который раздает сетевые папки. Желательно переключить сетевой ресурс в режим SMBv3. А если поддерживается только протокол SMBv2, тогда нужно настроить доступ с аутентификацией. Это самый правильный и безопасный способ исправить проблему.

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

  • NAS устройство – отключите гостевой доступ в настройках вашего NAS устройства (зависит от модели);
  • Samba сервер на Linux — если вы раздаете SMB папку с Linux, добавьте в в секции [global] конфигурационного файла smb.conf строку:
    map to guest = never

    А в секции с описанием сетевой папки запретить анонимный доступ:
    guest ok = no
  • В Windows вы можете включить общий доступ к сетевым папкам и принтерам с парольной защитой в разделе Control PanelAll Control Panel ItemsNetwork and Sharing CenterAdvanced sharing settings. Для All Networks (Все сети) в секции “Общий доступ с парольной защитой” (Password Protected Sharing) измените значение на “Включить общий доступ с парольной защитой” (Turn on password protected sharing). В этом случае анонимный (гостевой) доступ к папкам будет отключен и вам придется создать локальных пользователей, предоставить им доступ к сетевым папкам и принтерам и использовать эти аккаунты для сетевого доступа к общим папкам на этом компьютере.. Windows 10 Включить общий доступ с парольной защитой

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

Этот способ нужно использовать только как временный (!!!), т.к. доступ к папкам без проверки подлинности существенно снижает уровень безопасности ваших данных.

Чтобы разрешить гостевой доступ с вашего компьютера, откройте редактор локальных групповых политик (gpedit.msc) и перейдите в раздел: Конфигурация компьютера -> Административные шаблоны -> Сеть -> Рабочая станция Lanman (Computer Configuration ->Administrative templates -> Network (Сеть) -> Lanman Workstation). Включите политику Enable insecure guest logons (Включить небезопасные гостевые входы).

Windows 10 политика Включить небезопасные гостевые входы

Обновите настройки групповых политик в Windows с помощью команды:

gpupdate /force

В Windows 10 Home, в которой нет редактора локальной GPO,вы можете внести аналогичное изменение через редактор реестра вручную::

HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters “AllowInsecureGuestAuth”=dword:1

Или такими командами:

reg add HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f
reg add HKLMSoftwarePoliciesMicrosoftWindowsLanmanWorkstation /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f

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

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

Не удалось выполнить сопоставление сетевого диска из-за следующей ошибки.
Вы не можете подключиться к общей папке, так как она небезопасна. Эта общая папка работает по устаревшему протоколу 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.

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

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

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

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

[global]
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 так через реестр:
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" SMB1 -Type DWORD -Value 0 –Force

Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" SMB2 -Type DWORD -Value 1 –Force

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

Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol"
Set-SmbServerConfiguration –EnableSMB2Protocol $true

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

Если удаленное устройство требует использовать SMBv1 для подключения, и этот протокол отключен в вашем устройстве Windows, в Event Viewer появляется ошибка:

Log Name: Microsoft-Windows-SmbClient/Security
Source: Microsoft-Windows-SMBClient
Event ID: 32000
Description:  SMB1 negotiate response received from remote device when SMB1 cannot be negotiated by the local computer.

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

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

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

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

powershell - Enable-WindowsOptionalFeature SMB1Protocol-Client

Также вы можете включить/отключить SMBv1 в Windows 10 и 11 из меню
optionalfeatures.exe
-> SMB 1.0/CIFS File Sharing Support –> SMB 1.0/CIFS Client.

включить клиент smbv1 в windows 11

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

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

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

Нет доступа к сетевой папке, у вас нет прав доступа

При подключении к сетевой папке на другом компьютере может появится ошибка:

Нет доступа к \ComputerNameShare. Возможно у вас нет прав на использование этого сетевого ресурса. Обратитесь к системному администратору этого сервера для получения соответствующих прав доступа.
Network Error
Windows cannot access \PC12Share
You do not have permissions to access \PC12Share. Contact your network administrator to request access.

windows не открывается сетевая папка нет доступа

При появлении это ошибки нужно:

  1. Убедиться, что пользователю, под которым вы подключаетесь к сетевой папке, предоставлены права доступа на сервере. Откройте свойства общей папке на сервере и убедитесь что у вашего пользователя есть права доступа.
    Проверьте разрешения сетевой шары на сервере с помощью PowerShell:
    Get-SmbShareAccess -Name "tools"

    Затем проверьте NTFS разрешения:
    get-acl C:tools |fl

    проверьте разрешения доступа на сетевую папку с помощью powershell
    Если нужно, отредактируйте разрешения в свойствах папки.
  2. Проверьте, что вы используете правильные имя пользователя и пароль для доступа к сетевой папки. Если имя и пароль не запрашиваются, попробуйте удалить сохраненные пароли для доступа к сетевой папке в диспетчере учетных записей Windows. Выполните команду
    rundll32.exe keymgr.dll, KRShowKeyMgr
    и удалите сохраненные учетные данные для доступа к сетевой папке.очистити сохраненные пароли для доступа к сетевым папкам
    При следующем подключении к сетевой папки появится запрос имени и пароля. Укажите имя пользователя для доступа к папке. Можете сохранить его в Credential Manager или добавить вручную.

Дополнительные способы проверки доступа к сетевой папке в Windows

В этом разделе указаны дополнительные способы диагностики при проблема с открытием сетевые папок в Windows:

#
9 лет, 4 месяца назад

rec avatar

Темы:

16

Сообщения:

86

Участник с: 24 июня 2010

/etc/samba/smb.conf:

[global]
   workgroup = HOME
   server string = myhost
   security = user
   map to guest = Bad User
[share]
   comment = Общая папка
   path = /home/usr/share/
   read only = no
   browsable = yes
   guest ok = yes
   force user = nobody
   force group = nobody

Сама папка с правами 0777, но при попытки зайти из под Windows в расшаренную папку, пишет «Нет доступа к share».
Ни в логах (/var/log/samba/), ни journalctl/systemctl ничего связанной с ошибкой не нашёл.

kurych

#
9 лет, 4 месяца назад

Темы:

0

Сообщения:

1394

Участник с: 06 ноября 2011

http://micheljansen.org/blog/entry/182

rec

#
9 лет, 4 месяца назад

rec avatar

Темы:

16

Сообщения:

86

Участник с: 24 июня 2010

kurych
http://micheljansen.org/blog/entry/182

Ок, привёл конфиг в соответствие:

 [global]
    workgroup = HOME
    server string = myhost
    security = user
    map to guest = Bad User
    guest account = nobody
[public]
        comment = Public Shares
        browsable = yes
        path = /home/usr/share/
        public = yes
        writable = yes
        guest ok = yes

Не пущает

kurych

#
9 лет, 4 месяца назад

Темы:

0

Сообщения:

1394

Участник с: 06 ноября 2011

А все внимательно прочитано и проделано? Например, во это:

…Don’t forget to create this user using

# smbpasswd -an nobody

This will create the user with no password.

maisvendoo

#
9 лет, 4 месяца назад

maisvendoo avatar

Темы:

68

Сообщения:

1143

Участник с: 10 октября 2012

А что с этим?
/etc/samba/smb.conf

[global]
.
.
.
hosts allow = 192.168.0.103
hosts allow = 192.168.0.101

Это в моей домашней сети — один арч и две винды — экспи и семерка. Прописаны хосты, которым позволен доступ к расшаренным папкам в арче

Да пребудет с нами Сила…!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org

rec

#
9 лет, 4 месяца назад

rec avatar

Темы:

16

Сообщения:

86

Участник с: 24 июня 2010

kurych
А все внимательно прочитано и проделано? Например, во это:

…Don’t forget to create this user using

# smbpasswd -an nobody

This will create the user with no password.

да, внимательно. Юзер nobody давно создан, а самба перестала работать ЕМНИП после перехода с 3ей на 4ую.
А руки дошли только сейчас.

rec

#
9 лет, 4 месяца назад

rec avatar

Темы:

16

Сообщения:

86

Участник с: 24 июня 2010

maisvendoo
А что с этим?
/etc/samba/smb.conf

[global]
.
.
.
hosts allow = 192.168.0.103
hosts allow = 192.168.0.101

Это в моей домашней сети — один арч и две винды — экспи и семерка. Прописаны хосты, которым позволен доступ к расшаренным папкам в арче

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

arch_user

#
9 лет, 4 месяца назад

arch_user avatar

Темы:

1

Сообщения:

13

Участник с: 24 апреля 2013

должно помочь
http://archlinux.org.ru/forum/topic/12207/

akorop

#
9 лет, 4 месяца назад

Темы:

111

Сообщения:

1756

Участник с: 29 февраля 2012

rec
/etc/samba/smb.conf:

[global]
   map to guest = Bad User

У меня работает, а конфиге я нашёл такие вот интересные строчки:

  map to guest = Bad Password
  guest account = ak
# А так не работает:
#  map to guest = bad user

rec

#
9 лет, 4 месяца назад

rec avatar

Темы:

16

Сообщения:

86

Участник с: 24 июня 2010

akorop

rec
/etc/samba/smb.conf:

[global]
   map to guest = Bad User

У меня работает, а конфиге я нашёл такие вот интересные строчки:

  map to guest = Bad Password
  guest account = ak
# А так не работает:
#  map to guest = bad user

С «map to guest = Bad Password» тоже не пускает.

Здравствуйте. Пока борьба идет с громким матом, но хоть что-то уже получается. Итак.
Поставил самбу, настроил как здесь: http://bloglinux.ru/2011/06/26/kak-rassharit-papki-na-mashine-s-linux-dlya-se/
На винде диск видится, но выдает «отказано в доступе». Под линуксом такая же беда. Захожу в браузере smb://192.168.1.7/
Видно расшаренную папку и принтеры, в принтеры заходит, а вот в папку нет. Где копать?

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
#  - When such options are commented with ";", the proposed setting
#    differs from the default Samba behaviour
#  - When commented with "#", the proposed setting is the default
#    behaviour of Samba but the option is considered important
#    enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic
# errors.

#======================= Global Settings =======================

[global]
usershare owner only = false
## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = workgroup

# server string is the equivalent of the NT Description field
server string = %h server (Samba, Ubuntu)
host allow = ALL

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
#   wins support = no

# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
;   wins server = w.x.y.z

# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
;   interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
;   bind interfaces only = yes

#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
max log size = 1000

# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
#   syslog only = no

# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
syslog = 0

# Do something sensible when Samba crashes: mail the admin a backtrace
panic action = /usr/share/samba/panic-action %d

####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller".
#
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
server role = standalone server

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using. 
; passdb backend = tdbsam

obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
passwd program = /usr/bin/passwd %u
passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
pam password change = yes

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
map to guest = bad user

########## Domains ###########

#
# The following settings only takes effect if 'server role = primary
# classic domain controller', 'server role = backup domain controller'
# or 'domain logons' is set
#

# It specifies the location of the user's
# profile directory from the client point of view) The following
# required a [profiles] share to be setup on the samba server (see
# below)
;   logon path = \%Nprofiles%U
# Another common choice is storing the profile in the user's home directory
# (this is Samba's default)
#   logon path = \%N%Uprofile

# The following setting only takes effect if 'domain logons' is set
# It specifies the location of a user's home directory (from the client
# point of view)
;   logon drive = H:
#   logon home = \%N%U

# The following setting only takes effect if 'domain logons' is set
# It specifies the script to run during logon. The script must be stored
# in the [netlogon] share
# NOTE: Must be store in 'DOS' file format convention
;   logon script = logon.cmd

# This allows Unix users to be created on the domain controller via the SAMR
# RPC pipe.  The example command creates a user account with a disabled Unix
# password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u

# This allows machine accounts to be created on the domain controller via the
# SAMR RPC pipe. 
# The following assumes a "machines" group exists on the system
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u

# This allows Unix groups to be created on the domain controller via the SAMR
# RPC pipe. 
; add group script = /usr/sbin/addgroup --force-badname %g

############ Misc ############

# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
;   include = /home/samba/etc/smb.conf.%m

# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
;   idmap uid = 10000-20000
;   idmap gid = 10000-20000
;   template shell = /bin/bash

# Setup usershare options to enable non-root users to share folders
# with the net usershare command.

# Maximum number of usershare. 0 (default) means that usershare is disabled.
; usershare max shares = 100

# Allow users who've been granted usershare privileges to create
# public shares, not just authenticated ones
usershare allow guests = yes
username map = /etc/samba/smbusers
security = user
; encrypt passwords = yes
; guest ok = no
; guest account = nobody

#======================= Share Definitions =======================

# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares. This will share each
# user's home directory as \serverusername
;[homes]
;   comment = Home Directories
;   browseable = no
omment = DATA
path = /media/data
browsable = yes
writable = yes
guest ok = yes
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
;   create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
;   directory mask = 0700

# By default, \serverusername shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only "username"
# can connect to \serverusername
# This might need tweaking when using external authentication schemes
;   valid users = %S

# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
; guest ok = no
; read only = yes
create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
; browseable = yes
; read only = yes
; guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
;   write list = root, @lpadmin

[data]
comment = data
path = /media/data
writeable = yes
; browseable = yes
guest ok = yes

I have setup a samba share folder, however, when I try to access the share, I am getting «Windows Can not access the \servershare1. You don't have permissions to access \servershare1«

This server is joined to AD and I am able to list the shares using smbclient and AD User credentials. I don’t know what I am missing. Strange thing is that the Share1 does not even prompt to enter different credentials, however pops up the access denied message.

[root@samba]# smbclient -L samba -U username
Enter user's password:
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 3.6.23-35.el6_8]

        Sharename       Type      Comment
        ---------       ----      -------
        share1          Disk      Test Share

Here is the smb.conf:

        workgroup = EXAMPLEDOMAIN
        ;password server = ad-cxxac.example.com
        realm = EXAMPLE.COM
        security = ads
        ;idmap uid = 10000-20000
        ;idmap gid = 10000-20000
        template shell = /bin/sh
        winbind use default domain = true
        winbind offline logon = true
        winbind refresh tickets = yes
        log file = /var/log/samba/samba.log
        debug level = 3
        netbios name = samba
        encrypt passwords = yes
        winbind enum groups = no
        winbind enum users = no
        debuglevel = 3

#============================ Share Definitions ==============================
[share1]
        comment = Test Share
        path = /share1
        valid users =  EXAMPLEusername
        force group = "Domain Users"
        writable = yes
        read only = no
        force create mode = 0660
        create mask = 0777
        directory mask = 0777
        force directory mode = 0777

Domain Join is OK as well

[root@samba]# net ads testjoin
Join is OK

Directory permissions on the Shared Folder are

drwxrwxrwx.    2 root   domain users  4096 Sep  share1

I have setup a samba share folder, however, when I try to access the share, I am getting «Windows Can not access the \servershare1. You don't have permissions to access \servershare1«

This server is joined to AD and I am able to list the shares using smbclient and AD User credentials. I don’t know what I am missing. Strange thing is that the Share1 does not even prompt to enter different credentials, however pops up the access denied message.

[root@samba]# smbclient -L samba -U username
Enter user's password:
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 3.6.23-35.el6_8]

        Sharename       Type      Comment
        ---------       ----      -------
        share1          Disk      Test Share

Here is the smb.conf:

        workgroup = EXAMPLEDOMAIN
        ;password server = ad-cxxac.example.com
        realm = EXAMPLE.COM
        security = ads
        ;idmap uid = 10000-20000
        ;idmap gid = 10000-20000
        template shell = /bin/sh
        winbind use default domain = true
        winbind offline logon = true
        winbind refresh tickets = yes
        log file = /var/log/samba/samba.log
        debug level = 3
        netbios name = samba
        encrypt passwords = yes
        winbind enum groups = no
        winbind enum users = no
        debuglevel = 3

#============================ Share Definitions ==============================
[share1]
        comment = Test Share
        path = /share1
        valid users =  EXAMPLEusername
        force group = "Domain Users"
        writable = yes
        read only = no
        force create mode = 0660
        create mask = 0777
        directory mask = 0777
        force directory mode = 0777

Domain Join is OK as well

[root@samba]# net ads testjoin
Join is OK

Directory permissions on the Shared Folder are

drwxrwxrwx.    2 root   domain users  4096 Sep  share1

Делаю вашу работу:

  1. sudo apt-get install samba smbclient smbfs

  2. sudo nano /etc/samba/smb.conf

Заполняем по следующему принципу(стандартный кофиг можно удалить, или сбекапить):

[global] //главная секция настроек
  workgroup = home //имя локальной группы
  netbios name = my system //нетбиос имя компьютера
  server string = my file server //строка инфо о сервере
  security = share //уровень доступа
  browseable = yes //возможность просматривать вложенные каталоги
[my_share] //имя шары
  path = /home/user/my_share //путь к расшариваемому каталогу
  comment = for all //комментарий к шаре
  readonly = No //только чтение (выкл.)
  guest ok = Yes //возможность работы с каталогом пользователей без учетной записи на сервере

Если хотите, что бы пользователи могли писать в каталог:

  1. sudo chmod 777 /home/user/my_share

  2. readonly ставим в yes

После проделанных операций:

sudo smbd restart
sudo nmbd restart

Или просто

sudo reboot

P.S. Все это есть на первой странице поиска, первая строчка. Собственно, когда мне нужно было, я там и нашел. НЕ ЛЕНИТЕСЬ ВПРЕДЬ!

По поводу «Локальная сеть имеет домен .local, служба avahi будет отключена…»:

Про avahi читаем на вики, тут! Если не нужна, можно выпилить командой sudo apt-get purge avahi-daemon, только аккуратно, что бы ничего лишнего за собой не потянула.

Модератор: SLEDopit

mokynis

Сообщения: 48
ОС: KUbuntu 7.10

Решено: нет доступа из Windows к Samba-ресурс

Исходные данные:
KUbuntu 7.10 и Win XP на одной машине. Машина в сети Win 2003, в Active Directory имеется учетная запись для нее. Пока в Win XP-все с сетью в порядке. Перезагружаюсь в Linux (с теми же именем и паролем, что и для Win XP). Завел в домашней папке папку для общего доступа. Сам в нее войти через Сетевые ресурсы-Самба-Домен-Мой комп-Папка могу. В сети свой комп с другой машины (Win2000) вижу, но при попытке в «себя» (папку еще, разумеется, не видно) появляется надпись «Нет доступа к //Mainpc.
Данная учетная запись не может быть использована для входа в сеть с этой станции».
прочитал уже все, что смог найти, в том числе и тут на форуме. Пытался что-то поколдоватьс krb5.conf, чуть не завалил всю сеть. Вот отчет testparm:

Код: Выделить всё

Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[users]"
Processing section "[bendra]"
Processing section "[printers]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = NYA
# NYA-это домен так называется
        server string = linux
        security = SHARE
        log file = /var/log/samba/samba.log
        max log size = 50
        socket options = TCP_noDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        printcap name = /etc/printcap
        os level = 64
        dns proxy = No
        guest ok = Yes
        hosts allow = 10.10.25., 127.

[homes]
        comment = Home Directory
        read only = No
        browseable = No

[users]
        comment = All Home Directories
        path = /home
        read list = "@NYA/Domain Users"
        write list = "@NYA/Domain Users"
        read only = No

[bendra]
        comment = Data
        path = /home/main/bendra/
        read only = No
        create mask = 0777
        security mask = 00
        directory security mask = 00

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No

Что-то мне не очень нравится, что Linux-комп «standalone», хотя дело может быть и не в этом. Подскажите, пожалуйста!

mokynis

Сообщения: 48
ОС: KUbuntu 7.10

Re: Решено: нет доступа из Windows к Samba-ресурс

Сообщение

mokynis » 23.04.2009 13:49

вообще-то я эту ссылку читал, пытался состыковать с другими статьями, которые нашел по этой теме. Но ничего толком не получилось. Сегодня сделал все один-в-один, как советует urgor. Получилось плохо:
1) не нашел папок /usr/local/etc/cups и /usr/local/etc/rc.d (у меня вообще /usr/local/etc/ пустая) и файла /etc/rc.conf
Соответственно, не мог там ничего править и оттуда запускать. Это критично?
2) net join для меня, кажется, не нужен (я ж уже в AD заведен, правда, как Windows-машина), но выполнил
$ net ads join -U main
[2009/04/23 15:17:21, 0] param/loadparm.c:set_boolean(2859)
ERROR: Badly formed boolean in configuration file: «root».
[2009/04/23 15:17:21, 0] param/loadparm.c:lp_bool(2277)
lp_bool(root): value is not boolean!
[2009/04/23 15:17:21, 0] passdb/secrets.c:secrets_init(66)
Failed to open /var/lib/samba/secrets.tdb
Invalid configuration. Exiting….
Failed to join domain: Access denied
А если так,
sudo net ads join -U main
[2009/04/23 15:32:01, 0] param/loadparm.c:set_boolean(2859)
ERROR: Badly formed boolean in configuration file: «root».
[2009/04/23 15:32:01, 0] param/loadparm.c:lp_bool(2277)
lp_bool(root): value is not boolean!
main’s password:
Using short domain name — NYA
Failed to set servicePrincipalNames. Please ensure that
the DNS domain of this server matches the AD domain,
Or rejoin with using Domain Admin credentials.
Deleted account for ‘MAINPC’ in realm ‘NYA.INT’
Failed to join domain: Type or value exists
Я так понял, меня не пускают в домен, потому что я уже там есть?
3)$ wbinfo -p
Ping to winbindd succeeded on fd 3
$ wbinfo -t
checking the trust secret via RPC calls failed
error code was NT_STATUS_CANT_ACCESS_DOMAIN_INFO (0xc00000da)
Could not check secret
$ wbinfo -g
BUILTIN/administrators
BUILTIN/users
$ wbinfo -u
Error looking up domain users
Это, наверное, следствие того, что в домен не пустили?
И что теперь? Каждый раз, как переключаюсь из ОС в ОС, удалять свою учетную запись из AD и заново себя туда вводить? Мне довольно часто приходится менять ОС-работа заставляет.

mokynis

Сообщения: 48
ОС: KUbuntu 7.10

Re: Решено: нет доступа из Windows к Samba-ресурс

Сообщение

mokynis » 27.04.2009 07:59

гуру!!! Подскажите же хоть что-нибудь! В пятницу до того довыделывался, что чуть всю сеть не положил: пришлось перезагружать сервер и заново вводить себя (из-под WinXP) в сеть, а то сервер меня вообще видеть перестал, да и прочих пользователей с трудом видел. Сейчас восстановил настройки по умолчанию, хоть через Сетевый ресурсы-Самба могу входить на другие компы (хотя себя в сети не вижу-ну это логично…), а вот принтер подключить так и не могу-все правильно я ж не в сети… Как же мне все-таки полноценно себя в сеть завести? Или с такой двойной конфигурацией, как у меня это не делается?

Аватара пользователя

Ленивая Бестолочь

Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: нет доступа из Windows к Samba-ресурс

Сообщение

Ленивая Бестолочь » 27.04.2009 16:31

не нашел папок /usr/local/etc/cups и /usr/local/etc/rc.d (у меня вообще /usr/local/etc/ пустая) и файла /etc/rc.conf
Соответственно, не мог там ничего править и оттуда запускать. Это критично?

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

net join для меня, кажется, не нужен (я ж уже в AD заведен, правда, как Windows-машина)

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

ERROR: Badly formed boolean in configuration file: «root».

давайте еще раз конфиг в студию, видимо он изменился со времен первого сообщения.

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

vold

Сообщения: 11

Re: Решено: нет доступа из Windows к Samba-ресурс

Сообщение

vold » 28.04.2009 01:40

#man net<Enter>
#man smbclient<Enter>

#smbclient ….. localhost<Enter>

Далее, читаем забугорные форумы разработчиков Самба, где gnome-samba-aplet посылает ВСЕХ и надолго в более простых случаях.

#net join -U administrator_AD_login IP_PDC<Enter> полюбому при смене ОС нужен.

Мне на Samba 3.3.2-0.33 смонтировать шару с localhost(a) на localhost не удалось.

mokynis

Сообщения: 48
ОС: KUbuntu 7.10

Re: Решено: нет доступа из Windows к Samba-ресурс

Сообщение

mokynis » 05.05.2009 07:02

net join …вообще скорее нужен, т.к. сиды разные

то есть для нормальной работы в сети мне надо зарегистрировать еще одного «себя» в AD-а зачем?
Вернусь к тому, с чего начал: мне, собственно, в сеть полноправным членом ActiveDirectory не нужно. Мне надо, чтобы моя общедоступная папка была всем доступна и нужна возможность печатать на принтерах, подключенных к компьютерам под Win2000-XP, которые в сети. Так что я вернул smb.conf в исходное (22 апреля) состояние, но по-прежнему ни доступа к папке, ни печать через сеть не получается.
Или обязательно security должно быть ADS или DOMAIN (тоже пробовал, ничего не вышло)? Зачем тогда SHARE?

mokynis

Сообщения: 48
ОС: KUbuntu 7.10

Re: Решено: нет доступа из Windows к Samba-ресурс

Сообщение

mokynis » 07.05.2009 12:18

НУ, раз никто не отвечает, напишу, что у меня получилось-может кому-то поможет.
1. Создал группу пользователей Samba (smbgroup)
2. Создал пользователя smbuser и включил его в эту группу
делал это через KUser, а вообще-как удобно
3. С помощью system-config-samba добавил этого пользователя в группу пользователей Samba
4. подправил smb.conf

Код: Выделить всё

[global]
    workgroup = nya
    server string = linux
    guest ok = yes
    dns proxy = No
    domain master = no
    hosts allow = 10.10.25.,127.
    log file = /var/log/samba/samba.log
    max log size = 50
    security = user
    wins server = 10.10.25.2
    username map = /etc/samba/smbusers

[printers]
    comment = All Printers
    path = /var/spool/samba
    printable = yes
    browseable = no
    use client driver = yes
    public = yes

[print$]
    comment = Printer Drivers
    path = /var/lib/samba/printers

[bring]
    path = /home/main/bring
    comment = Data
    writeable = yes
    directory mask = 0777
    create mask = 0777
    guest ok = yes

———-
Все работает, только одно неудобство-при первом заходе на мой комп Winows-юзер должен ввести имя (smbuser) и его пароль.
А вот печатать так и не получается. Даже перечень пользователей сети не всех видно (когда запускаю KDEPrint), а которые видны, те не раскрываются.
Наш домен-ветвь дерева доменов предприятия, у них там и Firewall стоит. Может из-за этого у меня ничего не настраивалось? Я и Swat могу запустить, только, когда отключаю прокси. А со включенным сообщает, что
(146) Connection refused
Хотя и с отключенным прокси все равно принтер подключить не получается. Но это уже другой вопрос…
Но если кто подскажет, как же все-таки подключиться, буду очень благодарен

На чтение 3 мин. Просмотров 187 Опубликовано 03.09.2019

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

Samba работает в большинстве систем на основе Unix, таких как, например, ОС Linux. Samba также берет свое имя от блока сообщений сервера или SMB. В большинстве случаев вы будете использовать SMB для подключения к устройствам, которые не работают под управлением Windows.

Начиная со сборки 1709, Samba плохо работает, поскольку Windows отключает неаутентифицированный доступ к общим ресурсам, использующим SMB2 с включенным гостевым доступом. Тем не менее, есть способ решить эту проблему.

Содержание

  1. Как я могу исправить Windows не может получить доступ к сообщению общего доступа Samba?
  2. 1. Изменить параметры групповой политики
  3. 2. Включить SMB 1.0
  4. 3. Отключить цифровую подпись политики связи

Как я могу исправить Windows не может получить доступ к сообщению общего доступа Samba?

  1. Изменить параметры групповой политики
  2. Включить SMB 1.0
  3. Отключить цифровую подпись политики связи

1. Изменить параметры групповой политики

  1. Откройте Редактор групповой политики .
  2. Выберите Конфигурация компьютера и нажмите Административные шаблоны .
  3. Выберите Сеть и выберите имя своей рабочей станции .
  4. Измените Включить небезопасные гостевые входы на Включено .
  5. Примените изменения и перезагрузите компьютер.

2. Включить SMB 1.0

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

  1. Откройте Панель управления и нажмите Программы .
  2. Нажмите Включить или выключить функции Windows .
  3. Разверните параметр Поддержка общего доступа к файлам SMB 1.0/CIFS .
  4. Проверьте параметр SMB 1.0/CIFS Client .
  5. Нажмите кнопку ОК и нажмите кнопку Перезагрузить .

3. Отключить цифровую подпись политики связи

Скажем, вы находитесь в ситуации, когда у вас есть сеть с двумя рабочими станциями. Один работает под управлением Windows, а другой – под управлением Linux, и вы используете Samba для совместного использования локального устройства хранения. Но иногда Samba может неправильно управлять переговорами по безопасности сеанса с Windows. Чтобы это исправить, сделайте следующее:

  1. Нажмите Политика локального компьютера , затем выберите Конфигурация компьютера .
  2. Затем перейдите в Настройки Windows и выберите Настройки безопасности .
  3. Выберите Локальные политики и нажмите Параметры безопасности .
  4. Найдите политику с именем Клиент сети Microsoft: используйте цифровую подпись (всегда) , она всегда должна быть отключена .
  5. Примените изменения и перезагрузите компьютер.

Всегда помните, что уровень аутентификации Lan Manger должен быть равен Отправлять LM и NTLM – используйте сеансовую безопасность NTLMv2, если согласовано . И если есть какие-либо брандмауэры, настройте их правильно.

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

Like this post? Please share to your friends:
  • Sam4s ellix 50d драйвер windows 10
  • Sam файл как скопировать windows 7
  • Sam driver скачать торрент для windows 7
  • Sam codec pack скачать бесплатно для windows 10
  • Sam broadcaster для windows 10 крякнутый