Подробный гайд по использованию smbclient в Linux

Гайд по использованию smbclient в Linux: подключение к общим папкам SMB/CIFS, аутентификация, загрузка и скачивание файлов, устранение ошибок, примеры команд.

2026.08.31                  


Подробный гайд по использованию smbclient в LinuxПодробный гайд по использованию smbclient в Linux smbclient — это консольная утилита для работы с сетевыми ресурсами по протоколу SMB/CIFS (Server Message Block / Common Internet File System), который используется в Windows-сетях для общего доступа к файлам, принтерам и другим ресурсам. С помощью smbclient можно подключаться к общим папкам Windows или Samba-серверов, просматривать файлы, скачивать и загружать их, а также выполнять различные операции с каталогами.

Утилита входит в пакет Samba и доступна в большинстве дистрибутивов Linux.




Установка smbclient

Debian / Ubuntu

sudo apt update
sudo apt install smbclient

CentOS / RHEL / Fedora

sudo yum install samba-client        # CentOS 7 / RHEL 7
sudo dnf install samba-client        # Fedora / CentOS 8+

Arch Linux

sudo pacman -S smbclient

Базовый синтаксис

Классический синтаксис подключения к общему ресурсу:

smbclient //IP-адрес/Имя_ресурса -U имя_пользователя

Важно:

В большинстве версий smbclient используется двойной слеш (//), а не smb://. Некоторые сборки могут принимать и smb://, но для совместимости рекомендуется //.


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

Пример:

smbclient //192.168.1.100/share -U john

Введите пароль пользователя john.


Подробное описание параметров

Основные параметры

Параметр Описание
//IP/ресурс Адрес сервера и имя общей папки. Например: //192.168.1.10/public
-U <пользователь> Имя пользователя для аутентификации. Можно указать домен: -U DOMAIN\\user или -U user@domain
-W <рабочая_группа> Указать рабочую группу (workgroup), если отличается от стандартной
-p <порт> Номер порта (по умолчанию 445 для SMB, 139 для NetBIOS)
-m <протокол> Максимальный уровень протокола SMB: SMB1, SMB2, SMB3 и т.д. (например, -m SMB2)
-N Не запрашивать пароль (для гостевого доступа)
--password=<пароль> или --pw Передать пароль в командной строке (небезопасно)
-c <команда> Выполнить команду (или несколько через ;) и выйти
-L Показать список доступных ресурсов на сервере (вместо подключения к конкретному ресурсу)
-d <уровень> Уровень отладки (0–10)
-A <файл> Файл с учетными данными (формат: username = ..., password = ...)
-I <IP> Явно указать IP-адрес сервера (если используется NetBIOS-имя)
--option="name=value" Переопределить любые параметры конфигурации Samba

Примеры использования

1. Просмотр доступных общих ресурсов на сервере

smbclient -L //192.168.1.100 -U john

Вывод:

Sharename       Type      Comment
---------       ----      -------
public          Disk      Public files
docs            Disk      Documentation
IPC$            IPC       IPC Service

2. Подключение к общей папке в интерактивном режиме

smbclient //192.168.1.100/public -U john

После ввода пароля вы попадёте в интерактивную оболочку, похожую на FTP:

smb: \>

3. Основные команды внутри smbclient

Команда Описание
ls или dir Показать содержимое текущего каталога
cd <каталог> Перейти в каталог
pwd Показать текущий каталог
get <файл> [локальный_путь] Скачать файл с сервера на локальную машину
mget <шаблон> Скачать несколько файлов по маске (например, *.txt)
put <локальный_файл> [удалённый_путь] Загрузить файл на сервер
mput <шаблон> Загрузить несколько файлов
mkdir <каталог> Создать каталог на сервере
rmdir <каталог> Удалить пустой каталог
rm <файл> Удалить файл
rename <старое> <новое> Переименовать файл
lcd <локальный_каталог> Сменить локальный каталог
!<команда> Выполнить локальную команду (например, !ls)
help Список всех команд
exit или quit Выйти из smbclient

4. Неинтерактивный режим (одна команда)

smbclient //192.168.1.100/public -U john -c "ls"

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



smbclient //192.168.1.100/public -U john -c "cd docs; ls; get report.pdf"

5. Скачивание и загрузка файлов без интерактивного режима

Скачать файл:

smbclient //192.168.1.100/public -U john -c "get file.txt /home/user/file.txt"

Загрузить файл:

smbclient //192.168.1.100/public -U john -c "put /home/user/file.txt file_on_server.txt"

6. Рекурсивное скачивание каталога

Внутри smbclient можно использовать команду recurse и mget:

smb: \> recurse ON
smb: \> prompt OFF
smb: \> mget docs\*

Или в неинтерактивном режиме:

smbclient //192.168.1.100/public -U john -c "recurse ON; prompt OFF; mget docs\*"

Аутентификация

Вариант 1: Интерактивный ввод пароля (рекомендуется)

smbclient //server/share -U username

Пароль будет запрошен, ввод скрыт.

Вариант 2: Передача пароля в командной строке (небезопасно)

smbclient //server/share -U username%password

или

smbclient //server/share -U username --password=password

Внимание:

Пароль виден в истории команд и списке процессов. Используйте только для тестов.


Вариант 3: Файл с учетными данными (credentials file)

Создайте файл, например ~/.smbcredentials:

username = john
password = secret123
domain = WORKGROUP

Затем используйте:

smbclient //server/share -A ~/.smbcredentials

Убедитесь, что права на файл ограничены:

chmod 600 ~/.smbcredentials

Вариант 4: Переменные окружения

export USER=john
export PASSWD=secret123
smbclient //server/share -U $USER%$PASSWD

Обработка ошибок и частые проблемы

1. NT_STATUS_LOGON_FAILURE

Неправильные имя пользователя или пароль. Проверьте раскладку клавиатуры, регистр.

Если пользователь в домене, укажите домен:

smbclient //server/share -U DOMAIN\\user

или используйте формат user@domain.


2. NT_STATUS_BAD_NETWORK_NAME

Указано неверное имя общей папки (ресурса).

Проверьте список доступных ресурсов:

smbclient -L //server -U user

3. NT_STATUS_CONNECTION_REFUSED или Connection to server failed

Сервер недоступен, неправильный IP, порт заблокирован, или служба SMB не запущена.

Проверьте:

  • ping IP
  • telnet IP 445 (или nc -zv IP 445)
  • На сервере должен быть открыт порт 445 (SMB) или 139 (NetBIOS over TCP).

4. protocol negotiation failed: NT_STATUS_CONNECTION_RESET

Возможно, сервер требует более новый протокол SMB (SMB2/3), а smbclient пытается использовать SMB1 (или наоборот).

Укажите нужный протокол:

smbclient //server/share -U user -m SMB3

Для старых устройств (например, старые NAS) может потребоваться SMB1:

smbclient //server/share -U user -m SMB1

В новых версиях Samba SMB1 отключён по умолчанию, его можно включить в /etc/samba/smb.conf или передать --option='client min protocol=NT1'.


5. NT_STATUS_ACCESS_DENIED

У пользователя нет прав на данный ресурс. Обратитесь к администратору сервера.


6. Проблемы с кодировкой имён файлов

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

smbclient //server/share -U user --option='client charset=UTF8'

Советы и рекомендации

Безопасность

  • Никогда не передавайте пароль в командной строке, если это не разовое подключение в изолированной среде.
  • Используйте файл credentials с правами 600.
  • По возможности подключайтесь по VPN или в доверенной сети — трафик SMB может быть незашифрованным (если не используется SMB3 с шифрованием).

Автоматизация

Для автоматизации задач удобно использовать неинтерактивный режим с -c.

Можно написать скрипт:

#!/bin/bash
smbclient //server/share -A /path/to/credentials -c "cd backup; lcd /local/backup; prompt OFF; recurse ON; mget *"


Отладка

Если что-то не работает, добавьте параметр -d 3 или -d 10 для подробного вывода:

smbclient //server/share -U user -d 3

Использование smbclient для монтирования через файловую систему

Если нужен постоянный доступ, лучше использовать mount.cifs:

sudo mount -t cifs //server/share /mnt/share -o username=user,password=pass,uid=1000,gid=1000

Важно

smbclient — мощный инструмент для работы с SMB/CIFS ресурсами из командной строки. Он полезен для тестирования доступности общих папок, копирования файлов, автоматизации резервного копирования и администрирования. Освоив базовый синтаксис и параметры, вы сможете эффективно взаимодействовать с Windows- и Samba-серверами.

Для получения дополнительной информации смотрите:

man smbclient
smbclient --help

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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