Настройка Samba SMB на Linux (Ubuntu/Debian) 2026: полная конфигурация smb.conf с нуля | AdminWiki

Настройка Samba SMB на Linux (Ubuntu/Debian) 2026: полная конфигурация smb.conf с нуля

30 июля 2026 11 мин. чтения
Содержание статьи

Это руководство - пошаговая инструкция по развертыванию SMB-сервера на Ubuntu и Debian с нуля до работающей конфигурации. Вы установите Samba, создадите общие ресурсы (шары), настроите аутентификацию пользователей и гибко разграничите права доступа. Все команды и параметры проверены на актуальных версиях Samba 4.x в 2026 году.

Материал закрывает полный цикл: от установки пакетов до диагностики ошибок подключения из Windows. Если вам нужна настройка SMB в смежных средах, обратите внимание на руководства по Samba на Astra Linux и настройке SMB в TrueNAS.

Установка Samba и первоначальная конфигурация

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

Установка пакетов Samba на Ubuntu и Debian

Обновите списки пакетов и установите Samba вместе с клиентской утилитой для тестирования. Команды идентичны для Ubuntu и Debian - различий в названиях пакетов между этими дистрибутивами нет.

sudo apt update
sudo apt install samba smbclient

После установки проверьте версию демона. Это пригодится при обращении в поддержку или поиске документации по конкретной версии.

smbd --version

Служба smbd запускается автоматически после установки. Убедитесь, что она активна:

sudo systemctl status smbd

Если статус показывает active (running) - сервер готов к конфигурации. Если служба остановлена, запустите её и добавьте в автозагрузку:

sudo systemctl enable --now smbd

Базовая структура smb.conf и резервное копирование

Главный конфигурационный файл Samba - /etc/samba/smb.conf. Перед любыми правками создайте резервную копию. Это страховка от ситуации, когда изменения ломают сервер и нужно быстро откатиться к рабочему состоянию.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

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

  • [global] - общие параметры сервера: рабочая группа, уровень безопасности, протоколы, логирование. Эти настройки применяются ко всем шарам, если не переопределены локально.
  • [homes] - специальная секция, которая автоматически расшаривает домашние каталоги пользователей. При подключении к \\server\username Samba ищет каталог /home/username и предоставляет к нему доступ.
  • [printers] - общий доступ к принтерам, настроенным в CUPS. В большинстве современных сценариев эту секцию можно закомментировать или удалить.

Для файлового сервера без принтеров и автоматического расшаривания домашних каталогов базовую конфигурацию можно свести к секции [global] с минимальным набором параметров. Остальные секции добавляются по мере необходимости.

Создание и настройка общих ресурсов (шар)

Шара - это каталог на сервере, доступный по сети через протокол SMB. Создание шары сводится к трем шагам: подготовка каталога на диске, добавление секции в smb.conf и перезапуск службы.

Создание простой публичной шары

Начнем с публичного ресурса без аутентификации - это быстрый способ проверить работоспособность сервера и понять синтаксис конфигурации.

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

sudo mkdir -p /srv/samba/public
sudo chmod 777 /srv/samba/public

Откройте /etc/samba/smb.conf в редакторе и добавьте новую секцию:

[public]
   path = /srv/samba/public
   browseable = yes
   read only = no
   guest ok = yes
   create mask = 0664
   directory mask = 0775

Разбор параметров:

  • path - абсолютный путь к каталогу на сервере.
  • browseable = yes - шара видна в сетевом окружении при обзоре сервера.
  • read only = no - разрешена запись. Эквивалентно writeable = yes.
  • guest ok = yes - гостевой доступ без пароля. Параметр удобен для тестов, но в продакшене его отключают.
  • create mask / directory mask - права, с которыми создаются новые файлы и каталоги. Маска 0664 дает чтение/запись владельцу и группе, остальным - только чтение.

После сохранения файла проверьте синтаксис и перезапустите Samba:

testparm
sudo systemctl restart smbd

Проверьте доступность шары с локальной машины. Ключ -N указывает на гостевой вход без пароля:

smbclient //localhost/public -N

При успешном подключении вы увидите приглашение smb: \>. Команда ls покажет содержимое каталога, exit - выход.

Настройка приватной шары с аутентификацией

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

Подготовьте каталог и назначьте владельца:

sudo mkdir -p /srv/samba/private
sudo chown root:sambashare /srv/samba/private
sudo chmod 770 /srv/samba/private

Добавьте секцию в smb.conf:

[private]
   path = /srv/samba/private
   browseable = yes
   read only = no
   guest ok = no
   valid users = @sambashare
   create mask = 0660
   directory mask = 0770

Ключевой параметр - valid users = @sambashare. Символ @ означает, что доступ разрешен всем членам системной группы sambashare. Индивидуальных пользователей можно перечислить через пробел: valid users = ivanov petrov.

В секции [global] явно задайте режим аутентификации. Найдите или добавьте строку:

[global]
   security = user

Режим security = user - стандарт для Samba 4.x. Он требует, чтобы каждый подключающийся клиент предоставил имя пользователя и пароль, которые проверяются по локальной базе Samba.

Перезапустите сервер после изменений:

sudo systemctl restart smbd

Аутентификация и управление пользователями Samba

База пользователей Samba отделена от системных учетных записей Linux, но требует наличия соответствующего системного пользователя. Пароль для SMB-доступа задается отдельно командой smbpasswd.

Создание пользователя Samba и установка пароля

Создайте системного пользователя без домашнего каталога и без возможности входа в shell. Такой пользователь существует только для привязки Samba-аккаунта и не может интерактивно войти на сервер.

sudo useradd -M -s /sbin/nologin ivanov

Разбор ключей:

  • -M - не создавать домашний каталог.
  • -s /sbin/nologin - запретить вход в систему через SSH или консоль.

Добавьте пользователя в группу sambashare, если планируете использовать групповые политики доступа:

sudo usermod -aG sambashare ivanov

Теперь создайте Samba-пользователя и задайте пароль. Пароль для SMB-доступа может отличаться от системного пароля (которого у этого пользователя нет).

sudo smbpasswd -a ivanov
sudo smbpasswd -e ivanov

Ключ -a добавляет пользователя в базу Samba, -e активирует учетную запись. Без активации пользователь не сможет подключиться, даже если пароль задан корректно.

Проверьте список пользователей Samba:

sudo pdbedit -L

Вывод покажет всех пользователей, их SID и флаги. Активные учетные записи не имеют флага D (disabled).

Групповая политика доступа

Управление доступом через группы Linux упрощает администрирование. Вместо перечисления десятков имен в каждой секции smb.conf вы добавляете пользователя в группу - и он автоматически получает доступ ко всем шарам, где эта группа указана в valid users.

Создайте группу, если она еще не существует:

sudo groupadd sambashare

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

sudo usermod -aG sambashare ivanov
sudo usermod -aG sambashare petrov

В определении шары используйте синтаксис с @:

valid users = @sambashare

После изменения состава группы перезапуск Samba не требуется - ограничения применяются при следующем подключении пользователя.

Детальная настройка прав доступа и разрешений

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

Маски создания файлов и каталогов

Когда пользователь создает файл через SMB-подключение, права на этот файл определяются комбинацией маски Samba и системного umask. Параметры create mask и directory mask задают биты, которые будут установлены при создании. Биты, не указанные в маске, сбрасываются.

Стандартные значения для совместной работы отдела:

create mask = 0660
directory mask = 0770

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

create mask = 0644
directory mask = 0755

Важный нюанс: маска Samba применяется поверх прав, которые запрашивает клиент. Если Windows-клиент пытается создать файл с правами только на чтение, маска не добавит бит записи, даже если он в ней указан. Для принудительной установки битов используйте force create mode и force directory mode.

Принудительное назначение владельца и группы

В общих шарах файлы, созданные разными пользователями, получают разных владельцев. Это усложняет управление: пользователь ivanov не может удалить файл, созданный пользователем petrov, даже если оба входят в одну группу и права группы позволяют запись.

Параметры force user и force group решают эту проблему, подменяя владельца всех операций на заданного пользователя и группу:

[department]
   path = /srv/samba/department
   read only = no
   guest ok = no
   valid users = @department
   force user = deptowner
   force group = department
   create mask = 0660
   directory mask = 0770

Все файлы, созданные любым членом группы department, будут принадлежать пользователю deptowner и группе department. Это устраняет конфликты владельцев.

Плата за удобство - потеря аудита. По файлу нельзя определить, кто именно из пользователей его создал. В средах с высокими требованиями к отслеживанию изменений от force user лучше отказаться в пользу корректной настройки групповых прав и SGID-бита на каталоге:

sudo chmod 2770 /srv/samba/department

SGID-бит (цифра 2 перед основными правами) заставляет новые файлы наследовать группу каталога, а не первичную группу создателя. В сочетании с create mask = 0660 это дает совместный доступ без обезличивания.

Проверка конфигурации и диагностика ошибок

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

Утилита testparm: быстрая проверка синтаксиса

testparm - встроенный анализатор конфигурации Samba. Запустите его без аргументов для проверки синтаксиса:

testparm

Утилита выводит эффективную конфигурацию - все параметры с учетом значений по умолчанию. Если в выводе нет строки Loaded services file OK., в конфигурации есть синтаксическая ошибка. testparm укажет строку и характер проблемы.

Для проверки конкретного файла конфигурации:

testparm /etc/samba/smb.conf

Полезный прием: перенаправьте вывод testparm в файл и сравните с оригинальным smb.conf. Так вы увидите все неявные значения, которые Samba подставляет по умолчанию.

Анализ логов Samba и типовые коды ошибок

Логи Samba находятся в /var/log/samba/. Основные файлы:

  • log.smbd - события демона smbd: запуск, остановка, ошибки конфигурации.
  • log.nmbd - события NetBIOS-сервера, разрешение имен.
  • log.<client_ip> - логи для конкретных клиентских IP-адресов, если включено разделение по клиентам.

Для детальной диагностики временно увеличьте уровень логирования в секции [global]:

log level = 3

Уровень 3 достаточен для отслеживания подключений и ошибок аутентификации. Уровни 5-10 дают отладочную информацию вплоть до дампов пакетов - это нужно только при поиске специфических багов.

Типовые ошибки в логах и их причины:

  • NT_STATUS_LOGON_FAILURE - неверное имя пользователя или пароль. Проверьте регистр символов, Samba чувствительна к регистру в именах пользователей.
  • NT_STATUS_BAD_NETWORK_NAME - запрошенная шара не существует. Проверьте имя в пути подключения и наличие соответствующей секции в smb.conf.
  • NT_STATUS_ACCESS_DENIED - пользователь аутентифицирован, но не входит в valid users или не имеет файловых прав на каталог. Проверьте права командой ls -la /путь/к/шаре и членство пользователя в группах.
  • NT_STATUS_CONNECTION_REFUSED - порт SMB недоступен. Проверьте, что служба smbd запущена и брандмауэр не блокирует порты 139 и 445.

Для мониторинга активных подключений используйте smbstatus:

sudo smbstatus

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

Интеграция с Windows-клиентами и решение распространенных проблем

Конечная цель SMB-сервера - доступ из Windows. Современные версии Windows 10 и 11 по умолчанию отключают устаревшие протоколы, и неправильная конфигурация Samba приводит к ошибкам подключения.

Настройка протокола SMB для совместимости с современными Windows

Windows 10/11 с обновлениями безопасности 2024-2026 годов требует SMB2 или SMB3. SMB1 (CIFS) отключен на уровне ОС из-за уязвимостей, эксплуатировавшихся шифровальщиками WannaCry и NotPetya. Включать SMB1 на клиенте не рекомендуется.

В секции [global] явно задайте минимальную версию протокола:

[global]
   server min protocol = SMB2_02
   client min protocol = SMB2_02

Параметр server min protocol определяет минимальную версию, которую сервер принимает от клиентов. Значение SMB2_02 разрешает SMB 2.0 и выше. Для максимальной совместимости с современными Windows можно установить SMB3_00, но это отсечет старые устройства (сетевые принтеры, сканеры), которые могут поддерживать только SMB2.

Если в сети есть устройства, требующие SMB1 (старые МФУ, сетевые накопители), создайте для них отдельную шару с переопределением протокола:

[legacy]
   path = /srv/samba/legacy
   server min protocol = NT1
   hosts allow = 192.168.1.55

Такая конфигурация разрешает SMB1 только для конкретного IP-адреса старого устройства, не снижая безопасность всего сервера.

Типовые ошибки подключения из Windows и их исправление

Ошибка 0x80070035 «Сетевой путь не найден». Причина - Windows не может разрешить имя сервера или достучаться до порта SMB. Проверьте доступность командой ping server_name из Windows. Если ping проходит, проверьте брандмауэр сервера - порты 445/tcp и 139/tcp должны быть открыты. На сервере выполните:

sudo ufw allow 445/tcp
sudo ufw allow 139/tcp

Ошибка «Организация отключила доступ». Windows заблокировала гостевой доступ на уровне групповых политик. Отключите гостевой доступ на Samba-сервере (guest ok = no) и настройте аутентификацию по паролю. Альтернатива - включить гостевой доступ в реестре Windows, но это снижает безопасность клиента.

Ошибка «Неверное имя пользователя или пароль». Windows кэширует учетные данные и может подставлять сохраненный пароль, даже если вы ввели новый. Сбросьте кэш командой в Windows:

net use * /delete

После этого подключитесь заново, явно указав имя пользователя:

net use Z: \\server\share /user:ivanov

Шара не отображается в сетевом окружении. Сетевое обнаружение использует протоколы NetBIOS и LLMNR, которые могут быть заблокированы брандмауэром или отключены в Windows. Откройте порты 137-138/udp на сервере:

sudo ufw allow 137/udp
sudo ufw allow 138/udp

Если шары по-прежнему не видны, подключайтесь напрямую по UNC-пути: \\server_ip\share. Это работает всегда, независимо от состояния служб сетевого обнаружения.

Безопасность Samba-сервера: базовые рекомендации

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

Ограничение доступа по IP-адресам

Параметры hosts allow и hosts deny фильтруют подключения на уровне Samba до аутентификации. Это быстрее и эффективнее, чем полагаться только на брандмауэр.

Разрешите доступ только из локальной сети 192.168.1.0/24 и localhost:

[global]
   hosts allow = 127.0.0.1 192.168.1.
   hosts deny = 0.0.0.0/0

Синтаксис поддерживает подсети в формате 192.168.1. (с точкой на конце), CIDR-нотацию 10.0.0.0/8 и отдельные IP-адреса. Правила можно задать глобально в [global] или индивидуально для каждой шары. Если параметры заданы на обоих уровнях, применяются более restrictive правила шары.

Настройка брандмауэра для Samba

На сервере должны быть открыты четыре порта:

  • 445/tcp - основной порт SMB, прямой транспорт через TCP.
  • 139/tcp - NetBIOS session service, используется для обратной совместимости.
  • 137/udp - NetBIOS name service, разрешение имен.
  • 138/udp - NetBIOS datagram service, сетевое обнаружение.

Настройка через UFW:

sudo ufw allow 139,445/tcp
sudo ufw allow 137,138/udp
sudo ufw reload

Если сервер не должен быть виден в сетевом окружении и клиенты подключаются только по IP, порты 137-138/udp можно не открывать. Это сокращает поверхность атаки.

Для серверов, доступных из интернета (облачные VPS), обязательно включите шифрование SMB-трафика. В секции [global] добавьте:

smb encrypt = required

Шифрование SMB3 работает на уровне протокола и не требует настройки TLS-сертификатов. Параметр required отклоняет подключения клиентов, не поддерживающих шифрование. Для смешанных сред с устаревшими устройствами используйте smb encrypt = desired - шифрование включается, если клиент поддерживает, но не блокирует подключения старых устройств.

Регулярно обновляйте пакеты Samba. Уязвимости в SMB-стеке обнаруживаются несколько раз в год, и своевременное обновление закрывает их до появления эксплойтов в публичном доступе:

sudo apt update && sudo apt upgrade samba

Если вы разворачиваете файловый сервер в облаке, обратите внимание на облачные VPS от Timeweb Cloud - готовые виртуальные серверы с настраиваемым брандмауэром на уровне инфраструктуры. Для комплексной настройки файлового сервера с NFS и SMB изучите руководство по минимальному файловому серверу Linux.

Поделиться:
Сохранить гайд? В закладки браузера