Не удалось получить список доступных на сервере ресурсов ubuntu

Обновлено: 01.07.2024

Незадолго до обновления с 10.04 до 11.10 мой рабочий стол Ubuntu перестал позволять мне получать доступ к моим общим каталогам Windows. Я думал, что обновлюсь до 11.10, и проблема будет решена, но нет.

Невозможно смонтировать расположение - Не удалось получить список общих ресурсов с сервера

[ 116] С чего начать устранение этой проблемы? Я впадаю в отчаяние: (

Как ни странно, я получил всплывающее окно с заявлением:

Это верный ответ на ваш вопрос. У меня тоже была такая же проблема.

Запустите терминал и введите эту команду

и добавьте IP-адрес и имя компьютера в файл hosts. Сохраните и выйдите.

Пример ip и имени:

Возможно, что это - общая ошибка при соединении с системой:

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

То, что я копирую:

  • Помещенный smbclient в режим отладки, вывод должен обнаружиться в dmesg (-d | - debuglevel=level)
  • smbclient -L //<IP of Samba Server> -U <server user>
  • nmblookup
  • Можно ли смонтироваться от других систем?

Отредактируйте свой вопрос, если Вы делаете больше поиска и устранения неисправностей.

Прежде всего, чтобы работали в сети, должны работать оба демона Samba smbd и nmbd . Их можно запустить с service или с systemctl start для более новых системных версий Ubuntu.

smbtree перечисляет все общие ресурсы с компьютеров в сети.

Итак, до /etc/samba и мы sudo pico smb.conf .

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

и затем перезапустим серверы с service smbd restart и service nmbd restart

Works! Это ужасная ошибка в обновлении. Обновление не должно нарушать работоспособность, особенно такую ​​важную вещь, как сетевое взаимодействие. Хорошо, что я вспоминаю ручную работу, которую вы должны были выполнить, чтобы вернуть самбу обратно в redhat 5 и 6.

В Ubuntu 14.04:

Эта ошибка может быть вызвана именем netbios размером более 15 символов. Он должен генерировать журналы в файле /var/log/samba/log.smbd, который выглядит следующим образом:

Эта ошибка может быть исправлена ​​путем редактирования файла /etc/samba/smb.conf и добавив следующую строку:

ИМЯ-ПК должно содержать не более 15 символов.

У меня была эта проблема, и я решил ее, установив пакет gvfs-bin . За исключением gvfs-bin, большинство пакетов gvfs уже установлены: gvfs, -common, -libs, -daemons и -backends.

У меня были очень хорошие результаты в смешанных сетевых средах (Windows / Ubuntu) с этим методом:

Нажмите Alt + F2 и введите: gksu gedit /etc/nsswitch.conf

Найдите эту строку:

Добавьте wins , чтобы это выглядело так :

Установите пакет «winbind»: sudo apt-get install winbind

Перезагрузите или перезапустите сеть.

Моя проблема была связана с /etc/samba/smb.conf . Искал WORKGROUP и удалил строку после нее, в которой упоминалось имя localhost . Убедитесь, что WORKGROUP одинаково для обоих файлов конфигурации на каждом компьютере. Круглый путь к sudo apt-get purge samba (и / или remove ?), А затем к sudo apt-get install samba . Так я решаю проблему в первый раз, после обновления с 16.10 до 17.04 на одной из моих машин (16.10 для меня было ошибкой). У меня сейчас две машины: 16.04 и 17.04.

Просто добавьте «allow out» в брандмауэр:

  • Порт 137 / UDP - используется nmbd
  • Порт 138 / UDP - используется nmbd
  • Порт 139 / TCP - используется smbd
  • Порт 445 / TCP - используется smbd

И он будет работать, и если вы не знаете, как это сделать, просто установите "gufw" и используйте «+», а затем «простую вкладку».

Я мог видеть свой сервер Samba только по IP-адресу.

Переключение bcast на 1-е в «Порядок разрешения имен = bcast lmhosts hosts winins». И перезапуск самбы. Кстати, эта 1 строка перезапускает самбу.

Это тоже не сработало.

Я пошел посмотреть в /etc/samba/lmhosts , чтобы проверить его & amp; Нет файла! Итак, я сделал имосты.

Я все еще не могу найти имя сервера. Тогда я подумал, подождите, имя компьютера & amp; имя самбы разные. Поэтому я отредактировал hosts & amp; имя хоста, меняя их на имя сервера samba. Тщательное имя хоста содержит только одно слово. На компьютере нет ни одного комментария.

Теперь это просто работает. Я могу просто нажать сеть в nautilus или caja, и сервер просто всплывает! На всех клиентах все Linux или Android. Даже на старом Debian сжать машину.

Попробуйте войти в Windows-систему из Ubuntu с помощью Files. Перейдите в «Другие места» и «Подключиться к Сереру» внизу. Используйте smb: // username @ serveraddress. Это сработало для меня.

Проблема (по крайней мере, в Ubuntu 18.04, где я попробовал его) состоит в том что следующая команда:

только добавят правила для Samba, действующего как сервер. Это не добавит правил для Samba, действующего как клиент. Но когда Вы пытаетесь смонтировать удаленную долю, это - то, что Вы делаете: в этом сценарии Ваша машина является клиентом, и удаленная машина является сервером.

Кроме того, "никакой ответ" ошибка не является подсказкой, что некоторый брандмауэр портит вещи. Машины действительно обычно отвечают на запросы. Они могут ответить ошибкой, в этом случае у Вас есть другие проблемы, но если они не отвечают вообще, затем их пакеты обычно съедаются брандмауэром.

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

Для решения этой проблемы выполните следующую команду:

Это позволит пакетам UDP прибывать в любой локальный порт, пока они происходят из порта 137 или 138 из удаленного компьютера. Порт 138, вероятно, не необходим, поскольку я только видел, что пакеты прибывают от 137, но Вы никогда не знаете.

Это, вероятно, небезопасно, потому что исходящий порт может имитироваться, но давайте не будем параноиками.

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


ну как я понял ТСу хочется виндового сетевого окружения, ставь самбу и будет тебе счастье, ну или поднимай фтп-сервер если хочется просто файлопомойки в локалке


ну очевидно же, что либо smbd на машинах не запущен, либо samba-клиент не стоит, либо броадкасты в сети блокируются.


Фаервола в сети часом нет?

А как можно узнать, что бродкасты блокируются?

Скорее всего есть, но как и где устанвлен не знаю.

для начала - проверьте, может он и так открыт.

А как проверить?

Попоробовал сканировать порты моей машины с другой с помощью nmap. Он свалился, и предложил использовать ключ -PN - с ним вообще повис. Что это может значить?

netstat -an | find ":<номер порта>"

netstat -an | find ":21" find: `:21': No such file or directory

netstat -an | grep :21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

Тогда почему с другого компьютера нет доступа? Может там надо что-нибудь открыть?


По сабжу кто-нибудь может что-нибудь дельное подсказать? Почему поднятый FTP сервак не видно с других машин?


у меня стоит ибо я в силах поставить такую ось. а ты видимо неможешь осилить ни винду ни линукс


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


я сделал просто, безо всяких самб - расшариваю файлы через веб-сервер. результат: совместимо со всеми ОС, хоть с мобилками.

> у меня стоит ибо я в силах поставить такую ось. а ты видимо неможешь

Чувак, твои бредовые предположения, а так же стоИт у тебя или не стоИт меня не интересуют. Какую мне ставить ось я решаю сам. Если есть что конкретно сказать по теме, говори не стесняйся, если нет - ср*и в коментах где_нибудь в другом месте, а не в моем топике.

> де конец вселенной? чувак ты реально оценивай силу телепатии

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

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

> я сделал просто, безо всяких самб - расшариваю файлы через

веб-сервер. результат: совместимо со всеми ОС, хоть с мобилками.

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


а ты попробуй :)
имхо проще поставить апач, чем настроить фтп.

2all: а апач открывает симлинки?


sudo iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT

возможно туда же
sudo modprobe nf_conntrack_ftp


Зероконф поднимите же.


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

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

> sudo iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED > -j ACCEPT

sudo iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT

возможно туда же
sudo modprobe nf_conntrack_ftp

> Зероконф поднимите же.

> Что-то мне подсказывает, что Вы простой пользователь, а не админ, построивший и обслуживающий сеть. В таком случае, то, что Вам нужно, просто запрещено политикой безопасности предприятия, А Вы сильно рискуете схлопотать по зарплате или по трудовому кодексу.


Вполне возможно что запрещено политикой, как это можно посмотреть?

это настолько легко проверяется.


>А можно пару слов про то что сделают эти команды? :) почему порт 25, а не 21 указан (я в настройках FTP 21 порт не менял)?
ну да 21 ночь просто :)


не скажу. мы же не обман админов обсуждаем


Попробуй хоть с другой машины telnet твой_ip 21


И покажи iptables -L -v -n с твоей машины


> Попоробовал сканировать порты моей машины с другой с помощью nmap. Он свалился, и предложил использовать ключ -PN - с ним вообще повис. Что это может значить?
ЧООО? nmap повис? могу поспорить, что он сканил долго, а не "повис".

показывай
nmap -PN -p21 ip-адрес

> показывай nmap -PN -p21 ip-адрес

nmap -PN -p21 10.127.9.235

> Попробуй хоть с другой машины telnet твой_ip 21

Написал Trying to xx.xx.xx.xx.

sudo iptables -L -v -n
Chain INPUT (policy DROP 130K packets, 19M bytes)
pkts bytes target prot opt in out source destination
253K 124M ufw-before-logging-input all -- * * 0.0.0.0/0 0.0.0.0/0
253K 124M ufw-before-input all -- * * 0.0.0.0/0 0.0.0.0/0
130K 19M ufw-after-input all -- * * 0.0.0.0/0 0.0.0.0/0
130K 19M ufw-after-logging-input all -- * * 0.0.0.0/0 0.0.0.0/0
130K 19M ufw-reject-input all -- * * 0.0.0.0/0 0.0.0.0/0
130K 19M ufw-track-input all -- * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ufw-before-logging-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-before-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-logging-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-reject-forward all -- * * 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 31 packets, 1584 bytes)
pkts bytes target prot opt in out source destination
101K 18M ufw-before-logging-output all -- * * 0.0.0.0/0 0.0.0.0/0
101K 18M ufw-before-output all -- * * 0.0.0.0/0 0.0.0.0/0
3587 219K ufw-after-output all -- * * 0.0.0.0/0 0.0.0.0/0
3587 219K ufw-after-logging-output all -- * * 0.0.0.0/0 0.0.0.0/0
3587 219K ufw-reject-output all -- * * 0.0.0.0/0 0.0.0.0/0
3587 219K ufw-track-output all -- * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-after-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-input (1 references)
pkts bytes target prot opt in out source destination
66719 5217K RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:137
60248 14M RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:138
2 120 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:139
2 120 RETURN tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:445
114 37656 RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 RETURN udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68
21 1507 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-logging-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-logging-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-after-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-forward (1 references)
pkts bytes target prot opt in out source destination
0 0 ufw-user-forward all -- * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-before-input (1 references)
pkts bytes target prot opt in out source destination
2980 192K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
120K 105M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
32 1316 ufw-logging-deny all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
32 1316 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 3
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 4
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 11
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 12
1 84 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
101 33872 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
130K 19M ufw-not-local all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 224.0.0.0/4 0.0.0.0/0
5 1332 ACCEPT all -- * * 0.0.0.0/0 224.0.0.0/4
130K 19M ufw-user-input all -- * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-before-logging-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-logging-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-logging-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-before-output (1 references)
pkts bytes target prot opt in out source destination
2980 192K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
94728 18M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3587 219K ufw-user-output all -- * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-logging-allow (0 references)
pkts bytes target prot opt in out source destination

Chain ufw-logging-deny (2 references)
pkts bytes target prot opt in out source destination

Chain ufw-not-local (1 references)
pkts bytes target prot opt in out source destination
3386 238K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
5 1332 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type MULTICAST
127K 19M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type BROADCAST
0 0 ufw-logging-deny all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 10
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-reject-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-reject-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-reject-output (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-track-input (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-track-output (1 references)
pkts bytes target prot opt in out source destination
2366 142K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW
1191 75649 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW

Chain ufw-user-forward (1 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-input (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1777
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1777

Chain ufw-user-limit (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 5 LOG flags 0 level 4 prefix `[UFW LIMIT BLOCK] '
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0

Chain ufw-user-logging-forward (0 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-logging-input (0 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-logging-output (0 references)
pkts bytes target prot opt in out source destination

Chain ufw-user-output (1 references)
pkts bytes target prot opt in out source destination

Вы, наверное, не раз сталкивались с проблемой, что Ubuntu не видит сеть Windows или Windows не видит сетевую шару Linux. Такая проблема характерна для многих дистрибутивов с окружением Gnome. Ситуация довольно неоднозначная, раньше причиной этому был баг в GVFS, потом появилось ещё несколько осложняющих дело факторов.

В этой статье мы рассмотрим что делать если Ubuntu не видит шары Windows или Samba, как к ним всё таки подключится и можно ли решить проблему, сделать так чтобы Nautilus и Dolphin начали всё таки видеть сетевые ресурсы.

Почему Ubuntu не видит сеть Windows или Samba?

Нужно разобраться почему Ubuntu не может увидеть сеть Windows. Начиная с Windows 10 в компании Microsoft решили отказаться от старого протокола SMB1 и использовать только SMB2 и SMB3. Но в этих протоколах нет сетевого обнаружения. Для сетевого обнаружения в Windows теперь используется новый сервис WS-Discovery. В Nautilus для отображения сетевых ресурсов используется либо avahi либо протокол SMB1. Поэтому увидеть шару Windows не получится, не включив обратно устаревший протокол в реестре. Windows по умолчанию шары Samba тоже видеть не будет, потому что новый WS-Discovery в Samba не поддерживается. Ещё в 2015 году были предложены патчи для Samba добавляющие эту функциональность, но разработчики решили, что оно им не нужно. Поэтому если вы хотите чтобы Windows видела Samba, нужно отдельно установить сервис WSDD.

Но это ещё не всё. Начиная с версии Samba 4.11 разработчики решили, что они ничем не хуже Microsoft и отключили по умолчанию поддержку протокола SMB1. Теперь Nautils и Dolphin перестали видеть не только Windows шары, но и Linux тоже. Решается проблема либо установкой на Samba сервер Avahi, либо включением поддержки старого протокола SMB1 на сервере Samba.

Настойка сервера Samba

1. Включение протокола SMB1

Для того чтобы активировать протокол SMB1 в Samba необходимо добавить такие строчки в /etc/samba/smb.conf в секцию global:

sudo vi /etc/samba/smb.conf

server min protocol = NT1
client min protocol = NT1
min protocol = NT1

После этого надо перезапустить Samba.

sudo systemctl restart smbd
sudo systemctl restart nmbd

Хочу обратить ваше внимание, что у меня всё заработало только после того как я перезагрузил и сервер и клиент. Видимо что-то где-то кэшируется.

2. Настройка имени хоста

Имя хоста вашего компьютера, выводимое командой hostname должно совпадать со значением в файле /etc/hosts и со значением параметра netbios name в файле /etc/samba/smb.conf. Например:

Регистр букв не имеет значения.

3. Установка Avahi

Если предыдущий способ не поможет, то установка Avahi должна помочь. Samba не будет отображаться в сетях Windows, но зато появится в сетевом окружении в Nautilus. Для установки Avahi выполните:

sudo apt install avahi-daemon avahi-utils

После этого сервис стоит запустить и добавить в автозагрузку:

sudo systemctl enable avahi-daemon

sudo systemctl start avahi-daemon

Проверить доступные сервисы можно командой:

Среди них должна быть ваша шара, обозначенная как Microsoft Windows Network local.

4. Установка WSDD

Сервис WSDD нужен для того чтобы вашу шару было видно из Windows. Можно использовать сервис wsdd2 из этого репозитория. Его надо собрать из исходников, но в этом нет ничего сложного. Сначала склонируйте репозиторий:

Затем перейдите в папку с проектом:

Выполните make для сборки:

Затем установите программу, она только скопирует исполняемый файл и службу systemd в нужные директории:

sudo make install

Осталось запустить службу:

sudo systemctl daemon-reload

sudo systemctl enable --now wsdd2

Теперь Windows сможет видеть ваш сервер Samba. Таким образом если всё сделать правильно, то все всех будут видеть.

Настройка Windows

1. Общий доступ в Windows

Убедитесь, что в Windows общий доступ был включён. Если общий доступ отключен, то вы не сможете никак получить доступ к ресурсам. Откройте проводник и перейдите в пункт Сеть. Если сетевой доступ отключён, то система выдаст соответствующее предупреждение:


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


После этого система ещё раз спросит надо ли разрешить доступ для всех общественных сетей. Ответьте утвердительно:


После этого вы сможете получить доступ к общим ресурсам этого компьютера.

2. Включение SMB1 в Windows

Для того чтобы включить поддержку протокола SMB1 в Windows 10 откройте поиск и наберите Включение компонентов. Затем откройте утилиту Включение и выключение компонентов Windows:


Дальше найдите пункт SMB1.0 CIFS File Sharing Support и установите напротив него галочку:


Затем необходимо перезапустить компьютер:


После этого Ubuntu начнёт видеть вашу шару Windows и вы сможете к ней подключится.

Настройка клиента

1. Установить Samba

Если файловый сервер Samba у вас не установлен, то его надо установить для того чтобы был создан файл /etc/samba/smb.conf с параметрами по умолчанию. Они потом будут использоваться библиотекой libsmbclient и самой утилитой smbclient, которую вы можете применять для тестирования. Для установки выполните:

sudo apt install samba

Проверьте конфигурационный файл Samba на ошибки с помощью такой команды:


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

По умолчанию используется рабочая группа WORKGROUP. Убедитесь, что ваша рабочая группа имеет именно это имя, также убедитесь, что в /etc/samba/smb.conf задано правильное имя рабочей группы в параметре workgroup:

sudo vi /etc/samba/smb.conf


3. Версия протокола

В современных системах Windows для общего доступа к папкам используется файловая система CIFS, использующая современные версии протоколов SMB2 и SMB3. Эти протоколы не поддерживают обзор доступных общих папок так, как это ожидает получить Nautilus. Для того чтобы всё работало надо использовать старый протокол NT1. Чтобы его включить добавьте параметр client max protocol после параметра workgroup:

client max protocol = NT1


После этого сохраните изменения и перезагрузите компьютер и проверьте.

4. Правильный порядок разрешения имён

name resolve order = bcast lmhosts host wins


5. Не тот интерфейс

Если в вашем компьютере несколько сетевых интерфейсов, возможно smbclient пытается использовать не тот интерфейс. Чтобы посмотреть список интерфейсов используйте команду:


Затем найдите в /etc/samba/smb.conf параметр interface и замените в его значении eth0 на имя вашего интерфейса, который обеспечивает связь с нужной локальной сетью. Например на enp0s8:

interfaces = 127.0.0.0/8 enp0s8


После этого надо перезапустить службы Samba:

sudo systemctl restart smbd
sudo systemctl restart nmbd

6. Отладка

Если сеть Windows всё ещё не работает, вы можете попытаться отлаживать GVFS чтобы понять где именно возникает проблема и в чём её суть. Для этого надо завершить текущий сервер GVFS и запустить свой в терминале с включённой опцией отладки. Для этого выполните:

pkill gvfs; pkill nautilus

GVFS_DEBUG=all GVFS_SMB_DEBUG=10 $(find /usr/lib* -name gvfsd 2>/dev/null) --replace 2>&1 | tee gvfsd.log

7. Проблема в GVFS

Баг в GVFS, о котором я писал выше наблюдался для Samba версии 4.8 и ниже. Если сервер поддерживает протокол более высокого уровня, то клиент пытается использовать этот протокол, например SMB2 или SMB3, но на этих протоколах не работает отображение доступных ресурсов. Если у вас именно эта проблема, то для полного решения придется ждать обновления или использовать обходное решение описанное ниже.

8. Подключение напрямую

Даже если у вас не работает обнаружение сетевых ресурсов Windows, вы все ещё можете подключится к нужному компьютеру и получить с него файлы. Откройте пункт Другие места на левой панели Nautilus. Внизу окна вы увидите надпись Подключится к серверу введите smb://адрес_сервера в поле слева и нажмите Enter:

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

Введите пароль и вы увидите доступные общие папки:


Выводы

Если всё будет сделано правильно то Linux увидит вашу шару Windows или Samba:

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Начните с установки пакета smbclient.

В Debian, Linux Mint, Ubuntu, Kali Linux и их производных для установки samba выполните команду:

В Arch Linux, BlackArch и их производных выполните команду:

Как в Linux увидеть все компьютеры Windows с совместными ресурсами

Для показа всех совместных сетевых ресурсов Windows выполните команду:

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


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

Как можно увидеть выше, для компьютера \\VYACHESLAV получен список совместно используемых ресурсов, а для компьютера \\HACKWARE-MIAL — нет. При этом если я включал на компьютере \\HACKWARE-MIAL поддержку протокола SMB 1, а при запуске команды указывал хоть какое-то имя пользователя, например:

либо просто запускал smbtree с правами администратора:

то мне удавалось получить список файлов также и для компьютера \\HACKWARE-MIAL.

Как в Linux вывести доступные по сети ресурсы (совместные папки и принтеры Windows)

Предыдущая команда показала нам несколько компьютеров с сетевыми папками. Предположим, меня интересует компьютер \\HACKWARE-MIAL, чтобы вывести его сетевые папки я запускаю команду вида:

в моём случае это:


Кстати, вместо имени компьютера можно указать IP адрес.

В полученном выводе Share и Users являются общими сетевыми папками.

исчезнут, если создать файл /etc/samba/smb.conf.

пропадут, если на компьютере с сетевой папкой включить поддержку протокола SMB1.

Как я уже говорил чуть выше, флаг -N означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.

Как и для smbtree, для smbclient необязательно использовать sudo, но без sudo для некоторых компьютеров программа срабатывает нормально, а для некоторых завершается ошибкой:

Как подключиться к сетевой папке Windows из Linux

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

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

Для входа в интерактивный режим запустите команду вида:

Например, я хочу подключиться к компьютеру //HACKWARE-MIAL/ и выполнить действия с файлами в сетевой папке Share, тогда моя команда следующая:

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

Подключение к SMB папке, требующий авторизации

К примеру, на компьютере //HACKWARE-MIAL/ имеется сетевая папка ShareRestricted, права на просмотр которой есть у пользователя ShareOverlord. Для просмотра шары, защищённой паролем, нужно использовать команду вида:

В моём случае это команда:


Команды SMB в Linux

Доступны следующие интерактивные команды:

Выводит все доступные команды:

Для показа справки по определённой команде, выполните

Переход в другой каталог (смена текущей рабочей директории) на удалённой системе:

Переход в другую директорию на локальной системе:

Удаление файла в шаре:

Имеется псевдоним этой команды:

И ещё одна команда со схожей функцией:

Эта команда рекурсивно удалить все совпавшие с шаблоном имени файлы и директории.

Показ файлов и папок в текущей папке:


Имеется псевдоним этой команды:

И ещё один, даже более короткий псевдоним:

Для повторного скачивания файла:

Для скачивания всех файлов, чьём имя совпадает с шаблоном:

Например, чтобы скачать все файлы с файловым расширением .exe нужно запустить такую команду:

Для каждого файла, совпавшего с шаблоном, будет выполнен запрос на скачивание. Если вы действительно хотите его скачать, то нажмите клавишу «y»:

Также имеется команда newer, которая скачивает файлы (mget), которые новее, чем указанный локальный файл. Используется она так:

Выгрузка файла на общую папку:

Следующая команда скопирует локальный файл в шару:

Повторная закачка файла:

Для закачки всех файлов, чьём имя совпадает с шаблоном:

К примеру, чтобы закачать в шару все файлы (из локальной текущей рабочей директории), которые имеют расширение *.cap, нужно запустить команду:

Для каждого файла, совпавшего с шаблоном, будет выполнен запрос подтверждения, если вы действительно хотите его закачать, то нажмите клавишу «y»:


Включение и отключение рекурсии

Можно включать и отключать рекурсивный режим для mget и mput.

Показ всей возможной информации о файле:


В выводимой информации можно увидеть альтернативное (DOS) имя, временные метки (дата создания, доступа, записи и изменения файла), атрибуты.

Копирование файла на сервере:

Создание директории:

Удаление директории:

Удаление файлов

Следующая команда удалит все совпавшие с МАСКОЙ файлы:

Псевдоним команды для удаления файлов:

С помощью команды wdel можно удалить все совпавшие файлы по подстановочным символам:

Переименование файлов:

Ссылки

Создание жёсткой ссылки Windows:

Создание жёсткой ссылки UNIX:

Создание символьной ссылки UNIX:

Выход с сервера:

Вывод истории команд текущей сессии:

Просмотр содержимого текстового файла:

Показ текущей рабочей директории:

Другой вариант показа текущей рабочей директории — это команда cd без аргументов:

Создание и извлечение архивов tar

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

К примеру, я хочу скачать файлы all-databases.sql besside.log ChromeSetup.exe из совместной папки и объединить их в архив all.tar, тогда моя команда следующая:

Для установления режимов tar используется команда

Установка таймаута операций:

Таймаут устанавливается в секундах и по умолчанию равен 20.

Установка нового соединения:

Закрытие сессии, выход:

Вывод списка открытых подключений:

Отображение текущего активного подкючения:

Изменение удалённой директории (переход на одну папку выше):

Выполнение команд в локальной системе:

Чтобы команда выполнялась не на удалённой системе, а на локальной, поставьте перед ней ! (восклицательный знак), например^

Автоматическое выполнение команд в сетевой папке Windows

Необязательно каждый раз вводить все команды вручную — вы можете перечислить их через запятую и указать в двойных кавычках с опцией -c, например:

Читайте также: