You should start smbd nmbd winbindd instead: как правильно запустить Samba для файлового сервера

Сообщение «you should start smbd nmbd winbindd instead for domain member and standalone file server tasks» появляется в журнале, когда администратор пытается запустить бинарник samba (режим контроллера домена Active Directory) на сервере, чья конфигурация в smb.conf описывает обычный файловый сервер или члена домена. Samba проверяет параметр server role и отказывается стартовать в несоответствующем режиме, выводя именно эту подсказку.

Разобраться в ситуации несложно: в пакете Samba существует два разных способа запуска. Универсальный демон samba (он же samba-ad-dc во многих дистрибутивах) предназначен только для контроллера домена Active Directory. Для ролей standalone server и member server нужно запускать отдельные службы: smbd (файловый и принт-сервер по SMB), nmbd (NetBIOS-имена и старый механизм обзора сети) и winbindd (интеграция с доменом, сопоставление пользователей AD локальным UID/GID).

Почему возникает эта ошибка

Ключ к проблеме — параметр server role в секции [global] файла /etc/samba/smb.conf. При запуске демон samba читает конфигурацию и, если роль отличается от active directory domain controller, завершает работу с указанным сообщением. Это не сбой, а защитная проверка: разработчики Samba намеренно разделили режимы, чтобы избежать конфликтов портов и служб.

Типичные сценарии, приводящие к ошибке:

  • 🖥️ Администратор по привычке выполняет systemctl start samba-ad-dc на сервере, который должен быть простым файловым хранилищем.
  • 📦 После установки пакета samba в некоторых дистрибутивах активируется unit samba-ad-dc.service, хотя настроен standalone-режим.
  • 🔧 Сервер ранее готовили под контроллер домена, затем переделали в члена домена, но старый unit остался включённым в автозагрузке.
  • 📄 В smb.conf отсутствует или неверно указан параметр server role, и Samba не может корректно определить режим.

Как определить текущую роль сервера

Прежде чем что-то запускать, проверьте, какая роль задана в конфигурации. Самый надёжный способ — утилита testparm, которая парсит smb.conf и показывает итоговые параметры:

testparm -s | grep "server role"

Возможные значения: standalone server, member server или active directory domain controller. Если роль не задана явно, Samba вычисляет её по косвенным признакам — наличию параметров security, realm, workgroup. Полагаться на автоматику не стоит: явно пропишите server role в секции [global], чтобы поведение было предсказуемым.

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

systemctl status samba-ad-dc smbd nmbd winbind

Имена unit-файлов могут отличаться в зависимости от дистрибутива: где-то служба называется smbd.service, где-то — smb.service. Проверить доступные unit-файлы поможет команда systemctl list-unit-files | grep -E "smb|nmb|winbind|samba".

Различия режимов Samba

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

РежимНазначениеЧто запускать
Standalone serverАвтономный файловый сервер с локальными учётными записямиsmbd, nmbd (опционально)
Member serverФайловый сервер — член домена AD или NT4smbd, winbindd, nmbd (опционально)
AD Domain ControllerКонтроллер домена Active Directoryдемон samba (samba-ad-dc)
Только winbindАутентификация доменных пользователей без SMB-шарwinbindd

Обратите внимание: nmbd нужен только для устаревшего протокола NetBIOS (обзор сети в старых Windows, разрешение имён без DNS). В современных сетях с DNS его часто не запускают вовсе, хотя сообщение об ошибке упоминает все три службы — это просто универсальная формулировка.

📊 Какой режим Samba вы настраиваете?
Standalone файловый сервер
Член домена Active Directory
Контроллер домена AD
Пока не определился

Пошаговое исправление: запуск правильных служб

Последовательность действий для standalone-сервера или члена домена выглядит так. Сначала остановите и отключите unit контроллера домена, чтобы он не конфликтовал:

sudo systemctl stop samba-ad-dc

sudo systemctl disable samba-ad-dc

sudo systemctl mask samba-ad-dc

Маскировка (mask) не обязательна, но полезна: она исключает случайный запуск неверного режима, например при обновлении пакета. Затем включите и запустите нужные службы:

sudo systemctl enable --now smbd

sudo systemctl enable --now nmbd

sudo systemctl enable --now winbind

Для чистого standalone-сервера строку с winbind можно пропустить — без домена он не нужен. Для member server, наоборот, winbindd критичен: без него не будут резолвиться доменные пользователи и группы, и доступ к шарам по ACL сломается.

☑️ Проверка после запуска служб Samba

Выполнено: 0 / 5
⚠️ Внимание: перед сменой режимов сделайте резервную копию /etc/samba/smb.conf и каталога /var/lib/samba/. Там хранятся базы учётных записей и SID — при ошибочной инициализации контроллера домена эти данные могут быть перезаписаны.

Настройка smb.conf для member server

Если сервер должен быть членом домена Active Directory, минимальный каркас секции [global] обычно включает параметры workgroup, realm, security = ADS и настройки idmap для winbind. Конкретные значения зависят от вашего домена, и универсального шаблона нет: диапазоны idmap config должны соответствовать принятой в организации схеме сопоставления UID/GID.

После правки конфигурации сервер вводят в домен командой вида:

sudo net ads join -U Administrator

Успешность ввода проверяют через net ads testjoin и запрос wbinfo -u, который должен вернуть список доменных пользователей. Если wbinfo молчит — в первую очередь проверяйте, запущен ли winbindd, корректен ли DNS (сервер должен резолвить контроллер домена) и не расходится ли время с DC: Kerberos чувствителен к рассинхронизации часов.

Типичные ошибки после переключения режима

Даже после запуска правильных служб могут всплыть проблемы. Вот на что смотреть в первую очередь:

  • 🔍 Порты заняты. Если ранее стартовал демон samba, он мог занять порты 139/445. Убедитесь, что старый процесс завершён: ss -tlnp | grep -E "139|445".
  • 🗂️ Конфликт баз в /var/lib/samba. Остатки от попытки provision контроллера домена иногда мешают member-режиму. Очистку выполняйте только с бэкапом.
  • 🔐 AppArmor/SELinux. В некоторых дистрибутивах политики безопасности блокируют smbd доступ к каталогам шар. Проверяйте журналы аудита, если служба стартует, но доступа нет.
  • 📛 Имя службы winbind. Unit может называться winbind.service или winbindd.service — уточните через systemctl list-unit-files.
Что делать, если testparm ругается на конфиг

Запустите testparm без параметров и читайте вывод построчно — утилита указывает номер строки smb.conf с ошибкой. Частые причины: опечатки в именах параметров, недопустимые значения для текущей версии Samba, дублирующиеся секции. После исправления перечитайте конфигурацию командой smbcontrol all reload-config или перезапустите службы.

⚠️ Внимание: не запускайте одновременно демон samba (AD DC) и отдельные службы smbd/winbindd на одном хосте. Это приводит к конфликту портов и непредсказуемому поведению аутентификации. На контроллере домена функции файлового сервера обеспечивает сам демон samba.

Проверка результата

Финальная верификация занимает пару минут. Убедитесь, что службы активны: systemctl is-active smbd nmbd winbind. Затем с самого сервера выполните smbclient -L localhost -N — команда должна вывести список шар без ошибок аутентификации. С клиентской машины проверьте доступ по UNC-пути или через smbclient //server/share -U user.

Для member server дополнительно проверьте цепочку аутентификации: wbinfo -t (проверка доверия с доменом) и getent passwd — в выводе должны присутствовать доменные учётные записи, если настроен nsswitch с модулем winbind. Если их нет, смотрите файл /etc/nsswitch.conf: в строках passwd и group должен быть указан winbind.

Часто задаваемые вопросы

Обязательно ли запускать nmbd?

Нет. Служба nmbd нужна только для устаревшего NetBIOS: обзора сети в старых версиях Windows и разрешения имён без DNS. В современной сети с корректным DNS достаточно smbd (и winbindd для члена домена).

Можно ли использовать сервер AD DC одновременно как файловый?

Технически контроллер домена может раздавать шары через встроенный файловый сервис демона samba, но разработчики Samba не рекомендуют использовать DC как полноценный файловый сервер из-за ограничений с ACL и расширенными атрибутами. Для файловых задач лучше выделить отдельный member server.

Что делать, если службы запущены, но шара недоступна с Windows-клиента?

Проверьте по порядку: открыт ли файрвол (порты 139 и 445 TCP), корректны ли права на каталог шары на уровне файловой системы, совпадает ли версия протокола SMB (параметры server min protocol / server max protocol) с возможностями клиента, и что пишет журнал smbd в /var/log/samba/.

Как вернуть режим контроллера домена, если он нужен?

Отключите smbd, nmbd и winbind, затем выполните provision домена командой samba-tool domain provision и запустите unit samba-ad-dc. Учтите, что provision создаёт новую конфигурацию — существующий smb.conf будет перезаписан, поэтому сохраните его заранее.

Почему winbindd не стартует на standalone-сервере?

Это нормально: на автономном сервере без домена winbindd не нужен и может отказываться работать осмысленно. Просто не включайте эту службу — для standalone-режима достаточно smbd.