Это руководство - пошаговая инструкция по развертыванию 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\usernameSamba ищет каталог/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/departmentSGID-бит (цифра 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.