С помощью Samba можно превратить сервер, работающий под управлением ОС семейства Linux, в контроллер домена (Domain Controller, DC) Active Directory. Тот DC, который мы собираемся поднять, сможет работать как контроллер домена Windows NT4. Он подойдёт для централизованного хранения данных учётных записей пользователей и компьютеров.
Надо отметить, что мы не будем говорить о задаче создания основного контроллера домена (Primary Domain Controller, PDC) Active Directory, хотя связка Ubuntu Server/Samba, рассмотренная здесь (с добавлением OpenLDAP) вполне может играть и такую роль.
Итак, наша цель — быстро и экономично обзавестись AD DC. В этом нам поможет интерактивный инструмент
samba-tool
, который предназначен для автоматизированной подготовки сервера к работе, а именно, он позволяет сформировать файл настроек /etc/smb.conf
.Начнём с установки необходимого ПО.
Установка
Первый шаг — установка на сервер пакетов Samba и Winbind. Сделать это можно с помощью следующей команды:
sudo apt install samba libpam-winbind
Время установки невелико, даже с учётом того, что системе может понадобиться загрузить некоторые зависимости.
После установки можно приступать к настройкам.
Подготовка к настройке
Перед запуском
samba-tool
нужно проверить файл /etc/hosts
, а именно — верны ли записанные в нём полное доменное имя и IP-адрес контроллера домена. Там можно найти что-то вроде этого:127.0.0.1 localhost.localdomain
IP_ADDRESS_OF_SERVER localhost
IP_ADDRESS_OF_SERVER SAMBADOM.EXAMPLE.NET
SAMBADOM
Здесь
IP_ADDRESS_OF_SERVER
— это реальный адрес сервера Samba. Проверьте, чтобы файл содержал актуальные данные.Далее нужно задать имя узла для сервера. Как можно судить по приведённому выше фрагменту файла
/etc/hosts
, в нашем случае имя узла — SAMBADOM
. Для того, чтобы его настроить, откройте файл /etc/hostname
и соответствующим образом его измените. Далее — перезагрузите сервер.После того, как сервер перезагрузится, нужно удалить существующий файл
smb.conf
, а так же — любые файлы баз данных Samba (это .tdb
и .ldb
-файлы). Для того, чтобы найти директории, содержащие эти файлы, выполните следующие команды:mbd -b | grep "CONFIGFILE"
smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
На рисунке ниже показаны результаты исполнения этих команд, которыми можно будет воспользоваться для того, чтобы удалить ненужные файлы. Если же подобные файлы в системе не существуют — можно сразу двигаться дальше.
Поиск файлов, которые надо удалить
Использование samba-tool
Теперь пришло время воспользоваться
samba-tool
. Мы запустим это средство в интерактивном режиме, выполнив следующую команду:sudo samba-tool domain provision --use-rfc2307 --interactive
Выполнив команду с ключом
--use-rfc2307
, мы включаем расширения NIS. Samba-tool
предложит настроить следующие параметры:Realm
. Это полное DNS-имя домена, которое настроено в файлеhosts
. Например:SAMBADOM.EXAMPLE.NET
.Domain
. Доменное имя NetBIOS сервера Samba. Обратите внимание на то, что здесь рекомендуется использовать первую часть доменного имени DNS. Например,SAMBADOM
.Server Role
. Этот параметр предназначен для указания типа серверной роли. По умолчанию здесь установлено значениеdc
, оно нас устроит.DNS backend
. Этот параметр позволяет настроить DNS-сервер. Здесь так же оставляем параметр по умолчанию —SAMBA_INTERNAL
.
DNS forwarder IP address
. Данный параметр позволяет указать IP-адрес DNS-сервера, на который будут перенаправлены запросы, которые не может разрешить сервер Samba. Если перенаправление DNS-запросов вам не нужно — ничего не вводите в ответ на данный вопрос. Подробнее об этом можно почитать здесь.Administrator password
. Тут надо указать пароль администратора домена.
После того, как система получит ответы на интересующие её вопросы,
samba-tool
настроит Samba как контроллер домена. Можете просмотреть файл /etc/samba/smb.conf
и, если нужно, внести в него изменения. Прежде чем продолжать, позаботьтесь о регистрации пользователей в Samba. Этот шаг очень важен — иначе пользователям не удастся пройти аутентификацию. Делается это следующими командами:
ssmbpasswd -a USERNAME
smbpasswd -e USERNAME
Здесь
USERNAME
— имя существующего пользователя, которого надо добавить к Samba. Указать пароль нужно будет лишь после ввода первой команды. Вторая активирует пользователя.Настройка DNS-сервера
Нам надо, чтобы в качестве DNS-сервера на контроллере домена использовался он сам. Для того, чтобы это сделать, отредактируем файл
/etc/network/interfaces
, приведя его к такому виду:auto INTERFACE_NAME
iface INTERFACE_NAME inet static
address IP_ADDRESS_FOR_SERVER
netmask NETMASK
gateway GATEWAY
dns-nameservers IP_ADDRESS_FOR_SERVER
Тут же имеются настройки использования сетевым интерфейсом статического IP-адреса. Обратите внимание на то, что всё, набранное ЗАГЛАВНЫМИ буквами, надо настроить в соответствии с параметрами вашей системы.
После выполнения настроек перезапустите сетевые сервисы такой командой:
sudo service networking restart
Кроме того, следует отредактировать файл
/etc/resolv.conf
, внеся изменения, согласующиеся с теми, о которых было сказано выше. А именно, тут нас интересует следующая строка:nameserver IP_ADDRESS_FOR_SERVER
Здесь, вместо
IP_ADDRESS_FOR_SERVER
, нужно ввести тот же адрес, который был записан в параметр dns-nameservers
выше.Настройка Kerberos
У Kerberos имеется собственный стандартный конфигурационный файл, который нужно заменить файлом
krb5.conf
, сгенерированным в ходе подготовки Samba к работе. Для того, чтобы это сделать, выполните следующие команды:sudo mv /etc/krb5.conf /etc/krb5.conf.orig
sudo ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf
Обратите внимание на то, что вы можете столкнуться с отсутствием в системе файла
/etc/krb5.conf
. Если это действительно так, достаточно будет выполнить только вторую из вышеприведённых команд.Тестируем и подключаемся
Самое сложное позади. Теперь всё готово к тому, чтобы протестировать только что созданный контроллер домена на Samba и подключиться к нему. Быстро проверить, всё ли работает, можно с помощью такой команды:
smbclient -L localhost -U%
После ввода пароля пользователя Samba, вы должны увидеть сообщение об успешном подключении.
Успешное подключение
Как видите, при проверке
smbclient
выведены сведения о netlogon
и sysvol
как об общих ресурсах. Они созданы по умолчанию и должны существовать на контроллере домена. Кроме того, в /var/lib/samba/sysvol/REALM/scripts
следует поместить любые скрипты входа в систему, которые понадобятся клиентам. Здесь REALM
соответствует тому параметру REALM
, который был задан в ходе работы с командой samba-tool
.Итоги
Теперь контроллер домена готов принимать подключения. Однако, может оказаться так, что вам придётся отредактировать файл
/etc/samba/smb.conf
, внести в него данные, отражающие ваши требования к серверу. Этот файл, сгенерированный samba-tool
, весьма лаконичен, хотя и является хорошей отправной точкой для тонкой настройки вашего AD DC, построенного на базе Samba и Ubuntu Server.Уважаемые читатели! А какие варианты взаимодействия экосистем Linux и Windows кажутся вам наиболее интересными и полезными?
Комментарии (13)
Dark_kot
14.03.2017 12:48+1Чем больше я работаю, тем больше утверждаюсь в мысли, что там, где не выделяют деньги на контроллер домена, он и не нужен на самом деле.
foxmuldercp
14.03.2017 17:53+2Скорее админ не может обосновать зачем оно надо. Потому что для централизованной аутентификации и авторизации — вообще можно обойтись обычным LDAP.
Но никакая самба до сих пор не умеет групповые политики, и DAC.
А про "уровень NT4" в 2017м году слышать даже не смешно, учитывая что Samba помнится умеет уровень 2003 больше 5 лет.
Более того. еще под 6ю фрю в 2007 чтоли году я разворачивал почту, астериск, сквид, вебинтерфейсы к этому всему прекрасно интегрированные не только с AD, но и с его группами.
Когда легкой сменой списка групп нашим администратором AD, у пользователя "заканчивалась" почта и уровень доступа к интернету на проксе понижался до "Играть хорошо, а работать кто будет?"StraNNicK
14.03.2017 20:18Вообще-то групповые политики умеет и давно. Вопрос другой, что синхронизировать она их с AD не может.
Вот насчёт DAC не знаю, не пробовал.
P.S. Недавно встал вопрос, что развернуть на домашнем сервере «обычный LDAP» в виде 389ds или контроллер домена на самбе.
LeoSunny
14.03.2017 20:34Сведения устаревшие, уже 2008 R2 DC. Групповые политики и DAC в Samba уже есть. Пока в зачаточном состоянии, но есть. Посмотрите дорожную карту, планы очень интересные.
Dark_kot
15.03.2017 04:00Правильный вопрос — не не может обосновать, а нечего обосновывать. У меня 5 контор в обслуживании на аутсорсе. И им, на самом-то деле не нужно ничего. От слова совсем. Даже просто файловый сервер под вопросом(пара и них вполне успешно хранят файлы в бесплатных облаках) Единственное, что нужно на самом деле — это бэкапы на случай грозного криптолокера, просочившегося через антивирус. Иногда разграничения по доступу, но городить для 5-10 человек домен вовсе не обязательно. А те, кому нужно что-то в групповых политиках менять — это либо более-менее серьёзные организации со сложной структурой(а у них уже есть деньги на закупку ПО), либо студенты после вуза, так и не понявшие, что никому в конторе кроме них это не надо.
ls1
14.03.2017 19:44сможет работать как контроллер домена Windows NT4
Есть же samba4 из которой можно нормальное AD построить
LeoSunny
14.03.2017 20:40Используя в качестве DNS backend параметр SAMBA_INTERNAL получите проблему синхронизации с DHCP и обратной зоной DNS.
Лучше указать параметр BIND9_DLZ и потратить время на настройку BIND9.
timteka
14.03.2017 20:55+1PDC? Завязывайте уже с этим делом. В современной AD все контроллеры равнозначны. Нет больше ни праймари, ни секондари.
foxmuldercp
14.03.2017 21:16-2Ну да, ну да. а теперь открываем технет и идем уучить матчасть:
Operations Masters
Domain controllers that hold operations master roles are designated to perform specific tasks to ensure consistency and to eliminate the potential for conflicting entries in the Active Directory database. AD DS defines five operations master roles: the schema master, domain naming master, relative identifier (RID) master, primary domain controller (PDC) emulator, and infrastructure master.
The following operations masters perform operations that must occur on only one domain controller in the forest:
- Schema master
- Domain naming master
The following operations masters perform operations that must occur on only one domain controller in a domain:
Primary Domain Controller (PDC) emulator
- Infrastructure master
- Relative ID (RID) master
timteka
14.03.2017 21:55+3Очевидно, вы не смогли перевести ремарку «obsolete» над текстом, который процитировали?
RTFM: Active Directory Domain Services Overview
Mistique666
15.03.2017 09:45FSMO роли накой тащите то?
PDC эмулятор только.
Если у вас оно отвалится вы спокойно перетянете роли и будете дальше жить RID, Schema вообще крайне редко пользуются
intit
Ох уж этот Ubuntu Server ))
Превращал его в сервер облачного видео, обрабатывающих более 100 видеопотоков по rtsp на ооочень слабенькой машинке, ведёт себя крайне стабильно и шустро ))