Установка и базовая настройка SAMBA DC (Active Directory) на Linux Ubuntu

Обновлено и опубликовано Опубликовано:

Используемые термины: SambaActive Directoryконтроллер доменаUbuntu.

В инструкции показано, как развернуть службу каталогов samba dc (аналог Microsoft Active Directory) на систему Linux Ubuntu.

Предварительная настройка

Подготовим систему к работе. Предполагается, что мы будем настраивать сервер для домена dmosk.local.

1. Кэш репозиториев

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

apt update

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

apt upgrade

2. Время

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

Указываем часовой пояс:

timedatectl set-timezone Europe/Moscow

* В данном примере мы задаем зону по московскому времени.

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

timedatectl list-timezones

Устанавливаем утилиту для синхронизации времени:

apt install chrony

3. Имя сервера

Очень важно задать имя сервера до того, как поднимать контроллер домена. Смена имени на контроллере домена чувствительна и может привести к ошибкам в работе.

Выполняем команду:

hostnamectl set-hostname sadc-01.dmosk.local

* где sadc-01.dmosk.local — имя моего сервера.

Наш сервер должен уметь находить себя по имени. Добавляем его в файл hosts:

vi /etc/hosts

192.168.100.16  sadc-01.dmosk.local sadc-01

* где 192.168.100.16 — IP-адрес моего сервера.

Проверяем, что сервер правильно определяет свое полное имя:

hostname -f

В моем случае правильный ответ:

sadc-01.dmosk.local

4. Настройка DNS-клиента

Для контроллеров домена очень важно, чтобы использовались внутренние DNS, которые обслуживают внутренний домен. Когда мы развернем SAMBA DC, мы также поднимем DNS сервер.

По умолчанию, во многих Linux в качестве системы разрешения доменных имен используется systemd-resolved. Он выступает посредником между программами и внешними DNS-серверами. Его задача — кэширование и интеллектуальное управление запросами DNS. Однако, для наших целей он будет мешать, так как занимает порт 53, который необходим внутреннему DNS-серверу Samba AD DC.

Отключаем службу systemd-resolved:

systemctl disable --now systemd-resolved

Удаляем симлинк для resolv.conf:

unlink /etc/resolv.conf

Создаем новый файл resolv.conf:

vi /etc/resolv.conf

nameserver 77.88.8.8
search sadc-01.dmosk.local

* обратите внимание, что мы указали внешний DNS для Яндекса (77.88.8.8). Нам он нужен на момент установки пакетов. После мы его поменяем.

Теперь мы можем приступить к развертыванию контроллера домена.

Установка и настройка контроллера домена

Выполняем установку пакетов:

apt install samba samba-dsdb-modules samba-vfs-modules acl attr winbind libpam-winbind libnss-winbind krb5-config krb5-user libpam-krb5 smbclient dnsutils net-tools

* где основные пакеты:

  • samba: основной пакет сервера.
  • samba-dsdb-modules и samba-vfs-modules: для работы службы каталогов DSDB (аналог базы Microsoft AD DC) и поддержки расширенных атрибутов файловой системы. 
  • acl и attr: для поддержки POSIX ACL и расширенных атрибутов (xattr). Реализует возможность управлять правами на файлы, по похожему принципу с NTFS.
  • winbind, libpam-winbind, libnss-winbind: делает так, что доменные пользователи  и группы, хранящиеся в базе AD, были видны самой операционной системе Linux.
  • krb5-config, krb5-user, libpam-krb5: для работы протокола Kerberos (аутентификация).

** а также вспомогательные:

  • smbclient: диагностика доступа к ресурсам.
  • dnsutils: проверка работы DNS.
  • net-tools: проверка сетевых интерфейсов.

В процессе развертывания kerberos установщик задаст несколько вопросов.

1) Домен ЗАГЛАВНЫМИ символами:

Default Kerberos version 5 realm: DMOSK.LOCAL

2) Имя сервера в формате FQDN:

Kerberos servers for your realmsadc-01.dmosk.local

3) Как и на предыдущем шаге, необходимо указать полное наименование сервера:

Administrative server for your Kerberos realmsadc-01.dmosk.local

После установки пакетов нам нужно остановить и запретить для автозапуска следующие службы:

systemctl disable --now smbd nmbd winbind

* где:

  • smbd — обмен файлами и печать.
  • nmbd — поиск имен в старых сетях.
  • winbind — интеграция с пользователями Windows.

** все эти функции на себя возьмет служба samba-ad-dc. Если мы не выключим перечисленные сервисы, будет конфликт и ошибка в работе. По идее, они будут автоматически заблокированы (masked) после запуска samba-ad-dc, но их предварительная остановка — верный шаг.

Удаляем классический конфигурационный файл smb.conf:

mv /etc/samba/smb.conf /etc/samba/smb.conf.backup

* на всякий случай, мы его не удалили, а переместили.

Запускаем samba-tool:

samba-tool domain provision

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

Realm [DMOSK.LOCAL]:
Domain [DMOSK]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [77.88.8.8]:
Administrator password: 
Retype password: 

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

  • Realm — полное доменное имя. Используется более современными протоколами DNS и Kerberos.
  • Domain — NetBIOS-имя для старых версиях систем (поколения до Windows 2000).
  • Server Role — устанавливаемая роль сервера. Нам нужен Domain Controller.
  • DNS backend — выбираем, какой будет использоваться сервер DNS. В большинстве случаем стоит выбрать SAMBA_INTERNAL.
  • DNS forwarder — серверы DNS, на которые будут переводиться запросы в случае отсутствия информации о запрашиваемой доменной зоне.

После завершения работы утилиты samba-tool нам остается внести несколько правок и можно запускать сервис DC.

Убираем оригинальный конфигурационный файл krb5.conf и заменяем его тем, что сформировала утилита samba-tool:

mv /etc/krb5.conf /etc/krb5.conf.backup

cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

Открываем конфигурационный файл resolv.conf:

vi /etc/resolv.conf

Нам нужно удалить старую запись внешнего DNS и заменить на адрес локального сервера:

nameserver 77.88.8.8
nameserver 192.168.100.16

В случае, если у нас будет несколько серверов samba dc, необходимо прописать несколько строк. При этом лучше, чтобы первая строка вела на партнера по DC.

Разрешаем автозапуск сервиса samba-ad-dc и стартуем его:

systemctl enable --now samba-ad-dc

Проверяем статус:

systemctl status samba-ad-dc

Наш контроллер домена установлен.

Проверка работы AD DC

Необходимо убедиться в правильной работе контроллера домена. Для этого важно проверить работу DNS и возможность получить тикет после аутентификации пользователя.

Все нижеописанные команды вводим на поднятом контроллере домена.

1. Убедимся, что сервер возвращает правильный IP при запросе адреса по домену:

host -t A dmosk.local

dmosk.local has address 192.168.100.16

* в моем случае домен dmosk.local правильно вернул IP-адрес контроллера домена.

2. Проверяем dns запись для имени контроллера домена. В моем случае команда и ответ такие:

host -t A sadc-01.dmosk.local

sadc-01.dmosk.local has address 192.168.100.16

3. Также DNS должен правильно вернуть SRV запись для kerberos:

host -t SRV _kerberos._udp.dmosk.local

_kerberos._udp.dmosk.local has SRV record 0 100 88 sadc-01.dmosk.local.

... и ldap:

host -t SRV _ldap._tcp.dmosk.local

_ldap._tcp.dmosk.local has SRV record 0 100 389 sadc-01.dmosk.local.

4. Пробуем пройти аутентификацию от администратора:

kinit administrator

* пароль для данного пользователя мы задали при выполнении samba-tool.

Мы должны увидеть ответ на подобие:

Warning: Your password will expire in 41 days on Wed Jan 28 15:08:31 2026

Проверяем, что в системе появился тикет:

klist

Мы должны увидеть ответ, похожий на этот:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DMOSK.LOCAL

Valid starting     Expires            Service principal
12/17/25 16:14:12  12/18/25 02:14:12  krbtgt/DMOSK.LOCAL@DMOSK.LOCAL
        renew until 12/18/25 16:14:05

Контроллер домена готов к работе.

Создание пользователя

В качестве дополнительного примера рассмотрим создание нового пользователя.

Чтобы посмотреть на список уже существующих пользователей, вводим:

samba-tool user list

Для создания нового выполним команду:

samba-tool user create dmosk

Система запроси нас ввести логин и пароль:

New Password: 
Retype Password: 
User 'dmosk' added successfully

* в примере создан пользователь с именем dmosk.

# Active Directory # Ubuntu # Серверы # Управление
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Заказать настройку контроллера домена

Нужна бесплатная консультация?

Мини-инструкции

Как установить и настроить SambaDC (Active Directory) на Linux Ubuntu

Как установить систему для удаленного управления устройствами MeshCentral на Linux

Установка и настройка кластера Ceph на Ubuntu для организации дискового хранилища

Настройка Dovecot Solr для ускорения поиска по почте

Установка и настройка Signaling Server (High-performance backend) для Nextcloud Talk на Ubuntu Server

Как установить и настроить сервис S3 на базе Minio на Linux

Организация сервиса календаря и адресной книги Baikal на Linux Debian

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама