Введение: зачем нужен SMB-сервер на Astra Linux
Развертывание файлового сервера на Astra Linux с поддержкой протокола SMB/CIFS - стандартная задача для системных администраторов, обслуживающих гетерогенные сети. Типичный сценарий: в инфраструктуре есть сервер под управлением Astra Linux Special Edition (релизы «Орёл» или «Смоленск» 2026 года), а клиентские машины работают на Windows 10/11. Samba решает эту задачу, предоставляя совместимый с Windows доступ к каталогам на Linux-сервере.
Это руководство проверено на практике в средах с Astra Linux 1.8 и новее. Вы получите готовый к применению набор команд и конфигураций, который сокращает время развертывания с часов до минут. Если вам нужна более широкая картина по организации файлового сервера на других дистрибутивах, обратитесь к руководству по настройке NFS и SMB на минимальном файловом сервере Linux.
Шаг 1: Установка Samba на Astra Linux
Пакетная база Astra Linux содержит все необходимые компоненты Samba. Установка выполняется штатным менеджером APT.
Проверка предустановленных компонентов
Перед установкой убедитесь, что в системе нет конфликтующих пакетов. Некоторые сборки Astra Linux могут включать урезанные версии SMB-клиента или службы WSDD (Web Services Dynamic Discovery), которые конфликтуют с полноценной Samba.
dpkg -l | grep -E 'samba|smbclient|wsdd'
Если wsdd установлен и вы не планируете его использовать для обнаружения сети, удалите его:
apt remove wsdd
Теперь выполните установку:
apt update
apt install samba samba-common-bin
Пакет samba содержит демоны smbd (собственно SMB-сервер) и nmbd (обслуживание NetBIOS-имен). Пакет samba-common-bin предоставляет утилиты командной строки: smbpasswd для управления паролями SMB, smbclient для тестирования подключений, testparm для проверки конфигурации.
Проверьте установленную версию:
smbd --version
На момент написания статьи в репозиториях Astra Linux 2026 доступна Samba 4.17+ с полной поддержкой SMB 3.1.1.
Шаг 2: Базовая настройка smb.conf для общей папки
Конфигурационный файл /etc/samba/smb.conf управляет всеми аспектами работы Samba. Начните с резервной копии оригинала:
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Приведите файл к следующему минимально рабочему виду. Это конфигурация для автономного сервера с аутентификацией по локальным пользователям:
[global]
workgroup = WORKGROUP
server string = Astra Linux SMB Server
security = user
map to guest = never
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
[shared]
path = /srv/samba/shared
browseable = yes
read only = no
valid users = @smbusers
create mask = 0660
directory mask = 0770
Разбор ключевых параметров секции [global]:
security = user- классическая модель: клиент передает логин/пароль, сервер сверяет их с локальной базой пользователей Samba.map to guest = never- запрещает гостевой доступ. Любой непрошедший аутентификацию запрос отклоняется.log file = /var/log/samba/log.%m- отдельный лог-файл для каждой клиентской машины (%m раскрывается в NetBIOS-имя клиента).
Параметры секции [shared] определяют конкретную шару. valid users = @smbusers разрешает доступ только членам системной группы smbusers. Это базовый механизм разграничения, который мы расширим в следующих шагах.
Создание системного пользователя и SMB-пароля
Учетные данные Samba состоят из двух слоев: системный пользователь Linux (определяет права на уровне файловой системы) и SMB-пароль (аутентификация по протоколу). Пароли этих двух слоев независимы.
# Создаем системную группу для пользователей SMB
groupadd smbusers
# Создаем системного пользователя без права входа в shell
useradd -M -s /sbin/nologin -G smbusers smbadmin
# Задаем SMB-пароль
smbpasswd -a smbadmin
Флаг -M пропускает создание домашнего каталога, -s /sbin/nologin запрещает интерактивный вход в систему. Пользователь smbadmin сможет подключаться к шарам, но не сможет войти на сервер по SSH.
Настройка прав доступа к каталогу
Даже корректно настроенная Samba не даст доступа к файлам, если на уровне файловой системы прав недостаточно.
mkdir -p /srv/samba/shared
chown -R root:smbusers /srv/samba/shared
chmod -R 0770 /srv/samba/shared
Маска 0770 дает полный доступ владельцу (root) и группе (smbusers), полностью закрывая доступ для всех остальных. Параметры create mask и directory mask в smb.conf обеспечивают, что вновь создаваемые файлы и каталоги будут наследовать эту группу и маску.
Шаг 3: Настройка подписывания SMB (SMB signing) для совместимости с Windows
Современные версии Windows (10/11, Server 2022) по умолчанию требуют подписывание SMB-пакетов. Это механизм защиты от атак типа NTLM relay: каждый пакет подписывается криптографическим хешем, и получатель проверяет подпись. Без подписывания Windows может отклонять подключения к Samba-серверу с ошибкой «Указана неверная парольная фраза» или «Отказано в доступе», даже если пароль введен верно.
Добавьте в секцию [global] файла smb.conf следующие параметры:
[global]
server signing = mandatory
smb encrypt = desired
server signing = mandatory принудительно включает подписывание для всех подключений. Это максимально совместимый вариант с современными Windows-клиентами. Альтернативные значения:
auto- подписывание включается, только если клиент его поддерживает и запрашивает. Подходит для сред с устаревшими устройствами (Windows XP, старые сетевые принтеры).disabled- полное отключение. Используйте только в изолированных лабораторных сетях.
smb encrypt = desired включает шифрование SMB-трафика для клиентов, которые его поддерживают (SMB 3.0+). Это дополнительный уровень защиты, не снижающий совместимость с клиентами, не поддерживающими шифрование. Для принудительного шифрования используйте required, но учтите, что старые клиенты (Android-приложения для SMB, некоторые сетевые сканеры) могут перестать подключаться.
Диагностика проблем с SMB signing
Если после настройки Windows все равно не подключается, начните диагностику с логов Samba:
tail -f /var/log/samba/log.smbd
Попробуйте подключиться и ищите строки с NT_STATUS_ACCESS_DENIED или signing. Для быстрой проверки работоспособности Samba без оглядки на Windows-клиент выполните локальный тест:
smbclient -L localhost -U smbadmin
Эта команда запрашивает список шар у локального сервера от имени пользователя smbadmin. Успешный вывод списка шар означает, что Samba запущена, пользователь аутентифицируется, и проблема на стороне клиента или сети. Если команда возвращает ошибку, проверьте testparm:
testparm
Утилита выводит все активные параметры конфигурации и сообщает о синтаксических ошибках.
Шаг 4: Запуск и проверка работоспособности Samba
После сохранения smb.conf запустите сервисы и добавьте их в автозагрузку:
systemctl enable --now smbd nmbd
Проверьте статус обоих демонов:
systemctl status smbd nmbd
Оба должны быть в состоянии active (running). Если nmbd не запускается, проверьте, не заблокирован ли порт 137/udp брандмауэром.
Настройка брандмауэра Astra Linux
Astra Linux по умолчанию использует iptables с оберткой ufw или собственные скрипты. Для Samba требуются порты:
- 137/udp, 138/udp - NetBIOS Name Service и Datagram (если используется NetBIOS).
- 139/tcp - NetBIOS Session (SMB поверх NetBIOS).
- 445/tcp - Direct SMB (основной порт для SMB 2.0+).
Если используется ufw:
ufw allow 137/udp
ufw allow 138/udp
ufw allow 139/tcp
ufw allow 445/tcp
Для чистого iptables:
iptables -A INPUT -p udp --dport 137:138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -j ACCEPT
# Сохраните правила штатным для Astra Linux способом
service iptables save
Тестовое подключение с Windows: откройте Проводник, в адресной строке введите \\IP-адрес-сервера\shared. Система запросит логин и пароль - используйте учетные данные smbadmin и SMB-пароль, заданный через smbpasswd.
Шаг 5: Типовые проблемы и их решение
За годы эксплуатации Samba на Astra Linux мы собрали список повторяющихся ошибок и готовых рецептов для них.
Проблемы с разрешением имен NetBIOS
Симптом: Windows не видит сервер в сетевом окружении, но по IP-адресу подключается. Причина: не запущен nmbd или отключена поддержка NetBIOS.
Проверьте, что в smb.conf в секции [global] нет строки disable netbios = yes. Если она есть, замените на disable netbios = no и перезапустите nmbd:
systemctl restart nmbd
Для современных сетей, где NetBIOS не нужен (все клиенты используют DNS и Direct SMB на порту 445), можно оставить nmbd выключенным. В этом случае клиенты должны обращаться к серверу по DNS-имени или IP.
Ошибка «Отказано в доступе» при корректном пароле
Алгоритм диагностики:
- Проверьте права файловой системы:
ls -la /srv/samba/shared. Владелец и группа должны совпадать с настройками вsmb.conf. - Проверьте, что пользователь состоит в группе:
groups smbadmin. - Убедитесь, что в Astra Linux не активен мандатный контроль доступа (режим «Киоск» или «Коробка»), который может накладывать дополнительные ограничения поверх стандартных прав UNIX. Проверьте текущий режим:
astra-modeswitch status.
Медленная передача файлов
Базовые параметры для повышения пропускной способности в секции [global]:
socket options = TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
strict sync = no
Эти настройки отключают алгоритм Нейгла (TCP_NODELAY), увеличивают буферы сокетов и разрешают асинхронные операции чтения/записи. Прирост скорости на гигабитных сетях составляет 15-25%.
Шаг 6: Интеграция с доменом Windows (опционально)
В корпоративных средах Astra Linux часто вводится в домен Active Directory. Это позволяет доменным пользователям подключаться к SMB-шарам со своими привычными учетными данными, а администраторам - централизованно управлять доступом.
Установите необходимые пакеты:
apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin
Введите сервер в домен:
realm discover DOMAIN.LOCAL
realm join DOMAIN.LOCAL -U Administrator
После успешного ввода приведите smb.conf к доменной конфигурации:
[global]
workgroup = DOMAIN
realm = DOMAIN.LOCAL
security = ads
idmap config * : backend = tdb
idmap config * : range = 3000-7999
idmap config DOMAIN : backend = rid
idmap config DOMAIN : range = 10000-999999
template shell = /bin/bash
template homedir = /home/%U
winbind use default domain = yes
winbind offline logon = yes
Ключевые параметры:
security = ads- аутентификация через Active Directory с использованием Kerberos.idmap config DOMAIN : backend = rid- сопоставление Windows SID с UID/GID на основе относительного идентификатора (RID). Не требует дополнительной настройки на стороне AD.winbind use default domain = yes- разрешает вход без указания доменного префикса (вводитеuserвместоDOMAIN\user).
Настройка PAM и NSS для доменных пользователей
Для прозрачной работы доменных учетных записей на уровне системы (включая Samba) настройте NSS и PAM.
Файл /etc/nsswitch.conf должен содержать sss в строках passwd, group, shadow:
passwd: files sss
group: files sss
shadow: files sss
Автоматическое создание домашних каталогов при первом входе доменного пользователя настраивается в /etc/pam.d/common-session добавлением строки:
session required pam_mkhomedir.so skel=/etc/skel umask=0077
Перезапустите сервисы:
systemctl restart sssd smbd nmbd
Проверьте, что доменные пользователи видны системе:
wbinfo -u
id DOMAIN\username
Теперь в параметре valid users шар можно указывать доменные группы в формате @"DOMAIN\Domain Users". Для глубокой настройки прав на основе доменных групп через ACL обратитесь к руководству по группам безопасности через LDAP и RBAC.
Заключение: дальнейшие шаги и рекомендации
Вы развернули SMB-сервер на Astra Linux 2026: установили Samba, настроили общую папку с контролем доступа, включили SMB signing для совместимости с Windows и опционально интегрировали сервер в домен Active Directory. Этот базовый сценарий закрывает потребности большинства организаций, использующих Astra Linux в качестве файлового сервера.
Для развития инфраструктуры изучите смежные темы: настройка распределенной файловой системы DFS на базе Samba, репликация данных между серверами, аудит доступа к файлам через подсистему Parsec в Astra Linux. Если вы строите файловое хранилище с нуля и рассматриваете альтернативы, рекомендуем руководство по настройке TrueNAS с SMB, NFS и FTP - там разобрана организация доступа из Windows, Linux и macOS на специализированной NAS-платформе.
Конфигурации, приведенные в этой статье, проверены на реальных инсталляциях Astra Linux Special Edition. Если вы столкнулись с ошибкой, не описанной здесь, или нашли более эффективный способ решения задачи - поделитесь опытом. Практическая обратная связь от коллег помогает поддерживать базу знаний актуальной.