Подключение по smb linux

Обновлено: 06.07.2024

Файлы Azure — это простая в использовании облачная файловая система от Майкрософт. Файловые ресурсы Azure можно подключить в дистрибутивах Linux с помощью SMB-клиента в ядре.

Рекомендуемый способ подключения общей папки Azure в Linux состоит в использовании SMB 3.1.1. По умолчанию для Файлов Azure требуется шифрование при передаче, поддерживаемое SMB 3.0+. Служба Файлов Azure также поддерживает протокол SMB 2.1, который не обеспечивает шифрование при передаче, но с помощью SMB 2.1 нельзя подключать общие папки Azure из другого региона или локальной среды Azure по соображениям безопасности. Если приложению специально не требуется SMB 2.1, используйте SMB 3.1.1.

  • Базовая поддержка 3.1.1: 4.17
  • Подключение по умолчанию: 5.0
  • Шифрование AES 128 GCM: 5.3
  • Базовая поддержка 3.0: 3.12
  • Шифрование AES 128 GCM: 4.11
  • Базовый: 8.0+
  • Подключение по умолчанию: 8.2+
  • Шифрование AES 128 GCM: 8.2+

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

Поддержка SMB 2.1 добавлена в ядро Linux версии 3.7. Если вы используете версию ядра Linux выше 3.7, она должна поддерживать SMB 2.1.

Применяется к

Тип общей папки SMB NFS
Стандартные общие папки (GPv2), LRS/ZRS
Стандартные общие папки (GPv2), GRS/GZRS
Общие папки уровня "Премиум" (FileStorage), LRS/ZRS

Предварительные требования

Проверьте, установлен ли пакет cifs-utils.
Пакет cifs-utils можно установить с помощью диспетчера пакетов в дистрибутиве Linux по своему усмотрению.

В дистрибутивах Ubuntu и Debian используйте диспетчер пакетов apt :

В дистрибутиве Red Hat Enterprise Linux 8+ используйте диспетчер пакетов dnf :

В более старых версиях Red Hat Enterprise Linux используйте диспетчер пакетов yum :

В SUSE Linux Enterprise Server используйте диспетчер пакетов zypper :

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

Самая последняя версия интерфейса командной строки (CLI) Azure. Дополнительные сведения об установке Azure CLI см. в статье Установка Azure CLI и выберите операционную систему. Если вы предпочитаете использовать модуль Azure PowerShell в PowerShell 6+, учтите, что приведенные в этой статье инструкции относятся к Azure CLI.

Откройте порт 445. Взаимодействие SMB выполняется через TCP-порт 445. Проверьте, чтобы брандмауэр не блокировал TCP-порты 445 с клиентского компьютера. Замените <your-resource-group> и <your-storage-account> , затем выполните следующий сценарий.

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

Если не удается открыть порт 445 в корпоративной сети или выполнить это с помощью провайдера услуг Интернета, можно использовать VPN-подключение или ExpressRoute для обхода порта 445. Дополнительные сведения см. в разделе Рекомендации по работе с сетями для прямого доступа к общей папке Azure.

Подключение файлового ресурса Azure по запросу с помощью

При подключении общей папки в ОС Linux удаленный файловый ресурс будет представлен в виде папки в локальной файловой системе. Общие файловые ресурсы можно подключить в любом месте системы. В следующем примере показано подключение по пути /mount . Вы можете изменить его на нужный путь, поменяв переменную $mntRoot .

Замените <resource-group-name> , <storage-account-name> и <file-share-name> соответствующей информацией из своей среды:

Затем подключите общий файловый ресурс с помощью команды mount . В следующем примере команда $smbPath заполняется с помощью полного доменного имени для конечной точки файла учетной записи хранения, а $storageAccountKey заполняется ключом учетной записи хранения.

Начиная с версии ядра Linux 5.0, SMB 3.1.1 является согласованным протоколом по умолчанию. Если вы используете версию ядра Linux старше 5.0, укажите vers=3.1.1 в списке параметров подключения.

Можно использовать uid / gid или dir_mode и file_mode в параметрах подключения для команды mount , чтобы задать разрешения. Дополнительные сведения о настройке разрешений см. в разделе Цифровая нотация UNIX в Википедии.

При необходимости можно подключить одну и ту же общую папку Azure к нескольким точкам подключения. Завершив работу с общей папкой Azure, вы можете отключить ее с помощью sudo umount $mntPath .

Автоматически подключать общие папки

При подключении общей папки в ОС Linux удаленный файловый ресурс будет представлен в виде папки в локальной файловой системе. Общие файловые ресурсы можно подключить в любом месте системы. В следующем примере показано подключение по пути /mount . Вы можете изменить его на нужный путь, поменяв переменную $mntRoot .

Чтобы подключить общую папку Azure в Linux, используйте имя учетной записи хранения в качестве имени пользователя общей папки и ключ учетной записи хранения в качестве пароля. Так как учетные данные учетной записи хранения могут со временем измениться, их следует хранить отдельно от конфигурации подключения.

В следующем примере показано, как создать файл для хранения учетных данных. Не забудьте заменить <resource-group-name> и <storage-account-name> на соответствующую информацию из вашей среды.

Чтобы автоматически подключить общую папку, можно воспользоваться статическим подключением через служебную программу /etc/fstab или использовать динамическое подключение через служебную программу autofs .

Статическое подключение с помощью /etc/fstab

Используя более раннюю среду, создайте папку для учетной записи хранения или общей папки в папке подключения. Замените <file-share-name> на соответствующее имя общей папки Azure.

Наконец, создайте запись в файле /etc/fstab для общей папки Azure. В приведенной ниже команде по умолчанию использованы разрешения для файлов и папок Linux 0755, что означает права на чтение, запись и выполнение для владельца (имеется в виду владелец файла/каталога Linux), права на чтение и выполнение для пользователей в группе владельца, а также права на чтение и выполнение для прочих пользователей системы. При необходимости вы можете задать для подключения альтернативные разрешения uid и gid или dir_mode и file_mode . Дополнительные сведения о настройке разрешений см. в разделе Цифровая нотация UNIX в Википедии.

Начиная с версии ядра Linux 5.0, SMB 3.1.1 является согласованным протоколом по умолчанию. Можно указать альтернативные версии протокола с помощью параметра подключения vers (версии протокола: 3.1.1 , 3.0 и 2.1 ).

Динамическое подключение с помощью autofs

Чтобы динамически подключить общую папку через служебную программу autofs , установите ее с помощью диспетчера пакетов в дистрибутиве Linux по своему усмотрению.

В дистрибутивах Ubuntu и Debian используйте диспетчер пакетов apt :

В дистрибутиве Red Hat Enterprise Linux 8+ используйте диспетчер пакетов dnf :

В более старых версиях Red Hat Enterprise Linux используйте диспетчер пакетов yum :

В SUSE Linux Enterprise Server используйте диспетчер пакетов zypper :

Начните с установки пакета 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, например:

Машины с Linux (UNIX) могут также просматривать и монтировать SMB-ресурсы. Заметьте, что это может быть сделано когда сервером является либо машина с Windows, либо с сервером Samba!

Программа клиента SMB для UNIX-машин включена в дистрибутив Samba. Она обеспечивает ftp-подобный интерфейс командной строки. Вы можете использовать эту утилиту для переноса файлов между 'сервером' под управлением Windows и клиентом под Linux.

Большинство дистрибутивов Linux также включают полезный пакет smbfs, который позволяет монтировать и размонтировать SMB-ресурсы. Больше информации о smbfs можно получить дальше.

Для того, чтобы увидеть какие ресурсы доступны на данной машине, выполните команду:

где 'host' это имя машины, которую вы хотите видеть. Эта команда вернет список имен 'сервисов' - т.е. имен дисков или принтеров к которым может быть получен доступ. До тех пор, пока SMB сервер не будет настроен без управления доступом, он будет запрашивать у вас пароль. Введите в ответ на запрос пароль для пользователя 'гость (guest)' или ваш персональный пароль на этой машине.

Вывод этой команды должен выглядеть примерно так:

Browse list показывает другие SMB сервера в сети с доступными ресурсами.

Для использования клиента, выполните следующую команду:

где 'service' -- имя машины и сервиса. Например, если вы пытаетесь обратиться к директории, которая доступна под именем 'public' на машине названной 'zimmerman', то имя сервиса должно звучать как \\zimmerman\public. Однако в следствии ограничений оболочки, вам необходимо спрятать обратный слэш, так что в итоге это командная строка выглядеть следующим образом:

где 'mypasswd' -- символьная строка вашего пароля.

Вы получите приглашение smbclient:

Напечатайте 'h' чтобы получить помощь об использовании smbclient:

Если вы умеете использовать ftp, то вам не будут нужны справочные страницы о smbclient.

Хотя вы можете использовать smbclient для тестирования, вы скоро устанете использовать его в работе. Для работы вам скорее всего понадобится пакет smbfs. Smbfs поставляется с двумя простыми утилитами, smbmount и smbumount. Они работают подобно mount и umount для SMB-ресурсов.

Одно важное замечание: Чтобы использовать эти утилиты, у вас должна быть поддержка smbfs вкомпилированная в ядро!

Следующий пример показывает типичное использование smbmount для монтирования SMB-ресурса, названного "customers" с машины с именем "samba1":

Запуск команды mount покажет вам, что ресурс смонтирован, точно также как и через экспорт NFS:

Пожалуйста прочитайте справочные страницы smbmount и smbumount для дополнительной информации о описанных выше операциях.

Пожалуй нет ни одного офиса, в котором не применялись бы общие ресурсы локальной сети, будь то папки или принтеры. Крупные и средние компании используют возможности Active Directory, компании поменьше - используют штатные средства ОС Windows или Samba, но на серверах под управлением ОС Linux. Рассмотрим все случаи.

Что такое Samba?

Samba - серверное приложение, реализующее доступ клиентских терминалов к папкам, принтерам и дискам про протоколу SMB/CIFS.


Настройка общих папок

Linux

Установка и настройка Samba-сервер для Ubuntu выполняется следующими этапами.

Обновляем информацию о репозиториях и устанавливаем обновления для существующих пакетов в системе:

apt-get update && apt-get upgrade

Устанавливаем пакет Samba:

apt-get install -y samba samba-client

Создадим резервную копию файла конфигурации:

cp /etc/samba/smb.conf /etc/samba/smb.conf_sample

Создадим директории для файлов, например в каталоге /media:

Важно! По умолчанию, директория /media располагается в корне системы /, для нее редко создается свой раздел. По этой причине возможно переполнение корневого раздела. Во избежание этой неприятной ситуации, рекомендуем монтировать отдельный жесткий диск в /media/samba.

Создаем каталог для всех пользователей:

Изменим права доступа к каталогу:

chmod -R 0755 /media/samba/public

Также следует воспользоваться командой chown для смены владельца и/или группы.

Создаем директорию для ограниченного круга лиц:

С помощью системных инструментов создадим группу пользователей:

Добавляем пользователей Samba:

Созданных пользователей добавляем в группу:

usermod -aG smbgrp user1

Изменим группу, которой принадлежит приватная директория:

chgrp smbgrp /media/samba/private

С помощью инструментов Samba создадим пароль для добавленного пользователя:

smbpasswd -a user1

С помощью текстового редактора, например, nano, редактируем конфигурационный файл samba:

Удаляем все строки из файла. Вставляем следующие:

[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]
path = /media/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]
path = /media/samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes

Сохраняем используя сочетание Ctrl + X, затем нажимаем Y и Enter.

Объясним значения строк. конфигурационный файл состоит из трех секций:

global - данная секция отвечает за общие настройки Samba-сервера;

public и private - секции описания настроек директорий общего доступа.

В секции global присутствуют пять параметров:

  • workgroup - рабочая группа. Для упрощения работы пользователей WORKGROUP указывается, как группа по умолчанию. Если в вашей сети имя рабочей группы изменено, то следует изменить это значение и для Samba;
  • security - уровень безопасности сервера. Значение user означает авторизацию по паре логин/пароль;
  • map to guest - параметр определяет способ обработки запросов. Значение bad user означает, что запросы с неправильным паролем будут отклонены, даже если такое имя пользователя существует;
  • wins support - включить или выключить поддержку WINS;
  • dns proxy - возможность проксирования запросов к DNS.

Настройки директорий выполняются в соответствующих секциях:

path - полный путь до директории на жестком диске;

guest ok - возможность доступа к каталогу без пароля (гостевой);

browsable - показывать ли каталог (“шару”) на сервере среди прочих. Если параметр установлен как “no”, то доступ будет возможен по полному пути, например ip-addresshidden_directory;

force user - пользователь от которого ведется работа с каталогом. Для повышения безопасности сервера, обычно используют nobody. Главное, не использовать пользователя root - это небезопасно.

writable - установка значения как “yes” позволяет пользователю выполнять действия над файлами внутри каталога - переименование, добавление, удаление, перемещение в подкаталог и копирование;

valid users - список пользователей у которых есть доступ к каталогу. Если пользователей несколько, их имена указываются через запятую. Если необходим доступ для пользователей принадлежащих группе, перед именем группы устанавливается символ ”at” @ (“собака”).

Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.

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