ActiveDirectory/DC — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
(Управление пользователями)
(Управление пользователями)
 
(не показано 37 промежуточных версий 13 участников)
Строка 35: Строка 35:
  
 
= Установка =
 
= Установка =
 
+
1. Установите пакет {{pkg|task-samba-dc}} {{Since|4.3.1}}, который установит необходимое.
1. Так как Samba в режиме контроллера домена (Doman Controller, DC) использует как свой LDAP, так и свой сервер Kerberos, несовместимый с MIT Kerberos, перед установкой
 
остановите конфликтующие службы {{cmd|krb5kdc}} и {{cmd|slapd}}, а также {{cmd|bind}}:
 
for service in smb nmb krb5kdc slapd bind; do chkconfig $service off; service $service stop; done
 
 
 
2. Установите пакет {{pkg|task-samba-dc}} {{Since|4.3.1}}, который установит необходимое.
 
  
 
{{Note|До версии 4.3.1 требовалось явно установить пакеты: {{pkg|samba-DC python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-client krb5-kinit}}}}
 
{{Note|До версии 4.3.1 требовалось явно установить пакеты: {{pkg|samba-DC python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-client krb5-kinit}}}}
  
= Миграция существующего сервера  =
 
  
На базе https://wiki.samba.org/index.php/Migrating_a_Samba_NT4_domain_to_a_Samba_AD_domain_(classic_upgrade)
+
2. Так как Samba в режиме контроллера домена (Doman Controller, DC) использует как свой LDAP, так и свой сервер Kerberos, несовместимый с MIT Kerberos, перед установкой
 
+
остановите конфликтующие службы {{cmd|krb5kdc}} и {{cmd|slapd}}, а также {{cmd|bind}}:
1. Скопируем для миграции данные в один каталог:
+
{{Note|Вы так же можете отключить службы и выключить автозагрузку служб графическим способом. В ALT Linux Server зайдите в Система > Администрирование > ЦУС > Режим эксперта> Системные службы.}}
<source lang="Bash">mkdir /var/lib/samba/dbdir
+
for service in smb nmb krb5kdc slapd bind; do chkconfig $service off; service $service stop; done
cp -pv /var/lib/samba/private/* /var/lib/samba/dbdir
 
cp -pv /var/lib/samba/{account_policy,gencache_notrans,group_mapping}.tdb /var/lib/samba/dbdir
 
</source>
 
Должно скопироваться пять файлов .tdb
 
 
 
2. [[Su|Под root]] запустим classicupgrade:
 
<source lang="Bash">samba-tool domain classicupgrade --dbdir=/var/lib/samba/dbdir --use-xattrs=yes --realm=school.alt /etc/samba/smb.conf</source>
 
  
 
= Создание нового домена =
 
= Создание нового домена =
Строка 65: Строка 52:
 
  rm -f /etc/samba/smb.conf
 
  rm -f /etc/samba/smb.conf
 
  rm -rf /var/lib/samba
 
  rm -rf /var/lib/samba
 +
rm -rf /var/cache/samba
 
  mkdir -p /var/lib/samba/sysvol
 
  mkdir -p /var/lib/samba/sysvol
  
Строка 75: Строка 63:
 
При этом должно быть установлено правильное имя узла и домена для сервера:
 
При этом должно быть установлено правильное имя узла и домена для сервера:
 
* HOSTNAME=dc.school.alt в {{path|/etc/sysconfig/network}}
 
* HOSTNAME=dc.school.alt в {{path|/etc/sysconfig/network}}
* hostname dc.school.alt
+
* # hostname dc.school.alt
* domainname school.alt
+
* # domainname school.alt
  
 
{{Attention|При указании домена, имеющего суффикс '''.local''', потребуется на сервере и подключаемых компьютерах под управлением Linux <u>'''отключить''' службу {{cmd|avahi-daemon}}</u>.}}
 
{{Attention|При указании домена, имеющего суффикс '''.local''', потребуется на сервере и подключаемых компьютерах под управлением Linux <u>'''отключить''' службу {{cmd|avahi-daemon}}</u>.}}
Строка 84: Строка 72:
 
Создание контроллера домена ''school.alt'' с паролем администратора ''Pa$$word'':
 
Создание контроллера домена ''school.alt'' с паролем администратора ''Pa$$word'':
  
  samba-tool domain provision --realm=school.alt --domain school --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307 --use-xattrs=yes
+
  samba-tool domain provision --realm=school.alt --domain school --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307
  
 
== Интерактивное создание домена ==
 
== Интерактивное создание домена ==
 
+
{{note|У Samba свой собственный DNS-сервер. В '''DNS forwarder IP address''' нужно указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена.}}
 
В примере показано создание домена ''school.alt''.
 
В примере показано создание домена ''school.alt''.
  
Строка 150: Строка 138:
 
  chkconfig samba on
 
  chkconfig samba on
 
  service samba start
 
  service samba start
 +
 +
{{note|Если служба после установки никаким способом не запускается, перезагрузите сервер}}
 +
 +
= Настройка Kerberos =
 +
Откройте от имени суперпользователя файл /etc/krb5.conf.
 +
 +
Раскомментируйте строку "'''default realm'''" и введите название области заглавными буквами.
 +
 +
Ниже, под строкой '''[realms]''' вместо '''EXAMPLE.COM''' введите название области, а вместо '''example.com''' в '''"default domain"''' введите '''IP-адрес''' сервера с Samba.
 +
 +
Под строкой '''[domain_realm]''' '''example.com''' и '''EXAMPLE.COM''' замените на ваш домен сохраняя регистр.
 +
 +
==Альтернативный вариант==
 +
 +
В момент создания домена Samba автоматически конфигурирует шаблон файла krb5.conf для вашего домена, и оставляет его в директории /var/lib/samba/private/krb5.conf
 +
 +
Как следствие, можно его просто скопировать с заменой:
 +
 +
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
  
 
= Проверка работоспособности =
 
= Проверка работоспособности =
Строка 164: Строка 171:
  
 
2. Просмотр предоставляемых служб:
 
2. Просмотр предоставляемых служб:
<source lang="text"># smbclient -L localhost -Uadministrator
+
<source lang="text"># smbclient -L localhost -U administrator
 
Enter administrator's password:  
 
Enter administrator's password:  
 
Domain=[SCHOOL] OS=[Unix] Server=[Samba 4.0.21]
 
Domain=[SCHOOL] OS=[Unix] Server=[Samba 4.0.21]
Строка 183: Строка 190:
 
         WORKGROUP            HOST-15</source>
 
         WORKGROUP            HOST-15</source>
  
3. Проверка конфигурации DNS  
+
3. Проверка конфигурации DNS
 +
 
 
3.1 Убедитесь в наличии <tt>nameserver 127.0.0.1</tt> в {{path|/etc/resolv.conf}}:
 
3.1 Убедитесь в наличии <tt>nameserver 127.0.0.1</tt> в {{path|/etc/resolv.conf}}:
 
  host school.alt
 
  host school.alt
 
3.2 Проверяем имена хостов:
 
3.2 Проверяем имена хостов:
 +
*адрес '''_kerberos._udp.'''''<nowiki>*</nowiki>адрес домена с точкой''
 
<source lang="text"># host -t SRV _kerberos._udp.school.alt.
 
<source lang="text"># host -t SRV _kerberos._udp.school.alt.
 
_kerberos._udp.school.alt has SRV record 0 100 88 c228.school.alt.
 
_kerberos._udp.school.alt has SRV record 0 100 88 c228.school.alt.
# host -t SRV _ldap._tcp.school.alt.
+
</source>
 +
*адрес '''_ldap._tcp.'''''<nowiki>*</nowiki>адрес домена с точкой''
 +
<source lang="text"># host -t SRV _ldap._tcp.school.alt.
 
_ldap._tcp.school.alt has SRV record 0 100 389 c228.school.alt.
 
_ldap._tcp.school.alt has SRV record 0 100 389 c228.school.alt.
# host -t A c228.school.alt.
+
</source>
c228.school.alt has address 192.168.1.1</source>
+
*'''адрес хоста'''.''<nowiki>*</nowiki>адрес домена с точкой''
 +
<source lang="text"># host -t A c228.school.alt.
 +
c228.school.alt has address 192.168.1.1
 +
</source>
  
 
Если имена не находятся, проверяйте выключение службы {{cmd|named}}.
 
Если имена не находятся, проверяйте выключение службы {{cmd|named}}.
  
 
4. Проверка Kerberos:
 
4. Проверка Kerberos:
{{Attention|Имя домена должно быть в '''верхнем регистре''', иначе выдаст <source lang="text">kinit: KDC reply did not match expectations while getting initial credentials</source>}}
+
{{Attention|Имя домена должно быть в '''верхнем регистре''', иначе выдаст: <source lang="text">kinit: KDC reply did not match expectations while getting initial credentials</source>}}
<source lang="text"># kinit administrator@SCHOOL.ALT
+
<source lang="text"># kinit administrator
 
Password for administrator@SCHOOL.ALT:  
 
Password for administrator@SCHOOL.ALT:  
 
Warning: Your password will expire in 41 days on Вт 11 ноя 2014 08:58:30</source>
 
Warning: Your password will expire in 41 days on Вт 11 ноя 2014 08:58:30</source>
Строка 210: Строка 224:
 
30.09.2014 10:23:54  30.09.2014 20:23:54  krbtgt/SCHOOL.ALT@SCHOOL.ALT
 
30.09.2014 10:23:54  30.09.2014 20:23:54  krbtgt/SCHOOL.ALT@SCHOOL.ALT
 
         renew until 01.10.2014 10:23:45</source>
 
         renew until 01.10.2014 10:23:45</source>
 +
 +
{{Attention|Для серверов, не внесённых в зону обратного просмотра DNS, авторизация через nslcd по GSSAPI будет вылетать с диагностикой: <source lang="text">Local error: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server not found in Kerberos database)</source>}}
  
 
= Управление пользователями =
 
= Управление пользователями =
  
Создать пользователя с паролем, :
+
Создать пользователя с паролем[https://wiki.samba.org/index.php/Adding_users_with_samba_tool], :
 
  samba-tool user create <имя пользователя>
 
  samba-tool user create <имя пользователя>
 
  samba-tool user setexpiry <имя пользователя>
 
  samba-tool user setexpiry <имя пользователя>
Строка 222: Строка 238:
 
Просмотреть доступных пользователей:
 
Просмотреть доступных пользователей:
 
  samba-tool user list
 
  samba-tool user list
 +
 +
Удалить пользователя:
 +
samba-tool user delete <имя пользователя>
 +
 +
Отключить пользователя:
 +
samba-tool user disable <имя пользователя>
 +
 +
Включить пользователя:
 +
samba-tool user enable <имя пользователя>
 +
 +
Изменить пароль пользователя:
 +
samba-tool user setpassword <имя пользователя>
  
 
Не забудьте разблокировать пользователя:
 
Не забудьте разблокировать пользователя:
 
  samba-tool user setexpiry <имя пользователя> --noexpiry
 
  samba-tool user setexpiry <имя пользователя> --noexpiry
  
{{Attention|Не допускайте одинаковое имена для пользователей и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [http://support2.microsoft.com/kb/310845]}}
 
  
Если компьютер с таким именем заведён, то удалить его можно командой:
+
{{Attention|Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [http://support2.microsoft.com/kb/310845]}}
 +
 
 +
Если компьютер с таким именем заведён, удалить его можно командой:
 
  pdbedit -x -m <имя>
 
  pdbedit -x -m <имя>
 +
 +
Добавить группу:
 +
samba-tool group add groupname
 +
 +
Добавить UNIX-группу:
 +
samba-tool group add groupname --nis-domain=samdom --gid-number=<next available GID>
 +
 +
Удалить группу:
 +
samba-tool group delete groupname
 +
 +
Добавить пользователя в группу:
 +
samba-tool group addmembers "Domain Users" user
 +
samba-tool group addmembers "Domain Users" user,user1,user2
 +
 +
Удалить пользователя из группы:
 +
samba-tool group removemembers "Domain Users" user
 +
samba-tool group removemembers "Domain Users" user,user1,user2
 +
 +
Пользователи группы:
 +
samba-tool group listmembers "Domain Users" | grep username
 +
 +
Группы пользователя:
 +
samba-tool user show ''username''
 +
Смотрим значение '''memberOf'''.
  
 
= Заведение вторичного DC =
 
= Заведение вторичного DC =
Строка 235: Строка 288:
 
Подробная инструкция на английском языке: https://wiki.samba.org/index.php/Join_a_domain_as_a_DC
 
Подробная инструкция на английском языке: https://wiki.samba.org/index.php/Join_a_domain_as_a_DC
  
Имя узла: ''dc2.school.alt (192.168.1.106)''
+
Имя узла: ''dc2.school.alt (192.168.1.106)''. Предполагается, что пакет {{pkg|task-samba-dc}} уже установлен.
  
1. На PDC не забываем выключить службу bind и, если она была включена, перезапустить службу samba. Заводим адрес IP для dc2:
+
1. Заводим IP-адрес для dc2 на PDC (с версии Samba 4.7 и выше - запись вносится автоматически):
 
{{Attention|Указание аутентифицирующей информации (имени пользователя и пароля) '''обязательно'''!}}
 
{{Attention|Указание аутентифицирующей информации (имени пользователя и пароля) '''обязательно'''!}}
 
  # samba-tool dns add 192.168.1.1 school.alt DC2 A 192.168.1.106 -Uadministrator
 
  # samba-tool dns add 192.168.1.1 school.alt DC2 A 192.168.1.106 -Uadministrator
Строка 247: Строка 300:
 
  dns_lookup_kdc = true
 
  dns_lookup_kdc = true
  
{{Note|В resolvconf обязательно должен быть добавлен PDC как {{term|nameserver}}.}}
+
{{Note|Перед вводом в домен в resolvconf обязательно должен быть добавлен PDC как {{term|nameserver}}.}}
  
 
3. Получаем билет и убеждаемся, что билет получен:
 
3. Получаем билет и убеждаемся, что билет получен:
Строка 268: Строка 321:
 
  Joined domain SCHOOL (SID S-1-5-21-80639820-2350372464-3293631772) as a DC
 
  Joined domain SCHOOL (SID S-1-5-21-80639820-2350372464-3293631772) as a DC
  
5. Делаем службу {{cmd|samba}} запускаемой по умолчанию:
+
5. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 192.168.1.106).
 +
 
 +
6. Делаем службу {{cmd|samba}} запускаемой по умолчанию:
 
  # chkconfig samba on
 
  # chkconfig samba on
  
Если подключались к DC под управлением Windows, запустите службу {{cmd|samba}}:
+
7. Запускаем службу, соответственно:
 
  # service samba start
 
  # service samba start
  
Строка 297: Строка 352:
  
 
= Ссылки =
 
= Ссылки =
* https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
 
* https://wiki.samba.org/index.php/Installing_RSAT_on_Windows_for_AD_Management
 
* [https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC Добавление ещё одного DC в домен]
 
 
* Рекомендуемые серверные установочные образы (после установки выполните [[обновление ОС]]):
 
* Рекомендуемые серверные установочные образы (после установки выполните [[обновление ОС]]):
** [http://nightly.altlinux.org/p7/permalink/altlinux-p7-server-samba4-latest-x86_64.iso x86_64]
+
** [http://basealt.ru/products/alt-server/ Альт Сервер]
** [http://nightly.altlinux.org/p7/permalink/altlinux-p7-server-samba4-latest-i586.iso i586]
+
** [http://basealt.ru/products/alt-spt/ Альт Линукс СПТ 7.0] (сертификат ФСТЭК)
 +
** стартеркиты: [http://nightly.altlinux.org/p8/permalink/alt-p8-server-latest-x86_64.iso x86_64], [http://nightly.altlinux.org/p8/permalink/alt-p8-server-latest-i586.iso i586] (GPL)
 +
** [http://basealt.ru/about/contacts существуют] сборки samba-DC для [[ports/e2k|порта на "Эльбрус"]]
 
* Тестовые образы:
 
* Тестовые образы:
** [http://nightly.altlinux.org/p7/beta/ altlinux-p7-server-samba4.iso] (стабильная ветка)
+
** [http://nightly.altlinux.org/p7/beta/ altlinux-p7-server-samba4.iso] (старая стабильная ветка)
 
** [http://nightly.altlinux.org/sisyphus/alpha/ regular-server-samba4.iso] (нестабильная ветка)
 
** [http://nightly.altlinux.org/sisyphus/alpha/ regular-server-samba4.iso] (нестабильная ветка)
* [http://smb-conf.ru/samba4-addc.html Инструкция по настройке Samba в качестве контроллера домена, совместимого с Active Directory] (на русском языке)
+
* Документация на русском языке:
* [http://www.youtube.com/watch?v=8tYnjp_BleI Заведение групповых политик для домена (ролик)]
+
** [http://smb-conf.ru/samba4-addc.html Инструкция по настройке Samba в качестве контроллера домена, совместимого с Active Directory]
* https://wiki.samba.org/index.php/Samba_%26_Windows_Profiles
+
** [http://habr.com/ru/post/259029/ Samba4 — использование Python Scripting Interface]
* http://wiki.skytech.dk/index.php/Samba_4_-_domain_controller#Join_domain_with_a_linux_machine
+
** [http://habr.com/ru/post/272777/ Возможности и ограничения Samba 4 как контроллера домена Active Directory]
* [http://habrahabr.ru/post/259029/ Samba4 — использование Python Scripting Interface]
+
** [https://habr.com/ru/post/450572/ Samba DC в качестве второго контроллера в домене AD Windows 2012R2 и перемещаемые папки для клиентов на Windows и Linux]
* https://wiki.samba.org/index.php/Join_an_additional_Samba_DC_to_an_existing_Active_Directory
+
* wiki.samba.org:
* [http://habrahabr.ru/post/272777/ Возможности и ограничения Samba 4 как контроллера домена Active Directory]
+
** [https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO Samba AD DC HOWTO]
* https://wiki.samba.org/index.php/Backup_and_restore_an_Samba_AD_DC
+
** [https://wiki.samba.org/index.php/Installing_RSAT_on_Windows_for_AD_Management Installing RSAT on Windows for AD Management]
 +
** [https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC Добавление ещё одного DC в домен]
 +
** [https://wiki.samba.org/index.php/Samba_%26_Windows_Profiles Samba & Windows Profiles]
 +
** [https://wiki.samba.org/index.php/Join_an_additional_Samba_DC_to_an_existing_Active_Directory Join an additional Samba DC to an existing Active Directory]
 +
** [https://wiki.samba.org/index.php/Backup_and_restore_an_Samba_AD_DC Backup and restore an Samba AD DC]
 +
* Иные ресурсы:
 +
** [http://www.youtube.com/watch?v=8tYnjp_BleI Заведение групповых политик для домена (ролик)]
 +
** [http://wiki.skytech.dk/index.php/Samba_4_-_domain_controller#Join_domain_with_a_linux_machine Samba 4 - domain controller#Join domain with a linux machine]
  
 
= Советы =
 
= Советы =
Строка 327: Строка 388:
 
  samba-tool domain passwordsettings set --min-pwd-age=0
 
  samba-tool domain passwordsettings set --min-pwd-age=0
 
  samba-tool domain passwordsettings set --max-pwd-age=0
 
  samba-tool domain passwordsettings set --max-pwd-age=0
 +
* Для просмотра всех записей DNS домена выполните:
 +
samba-tool dns query localhost test.altlinux '@' ALL -U 'Administrator%Pa$$word'
 +
* Для удаления заведённого хоста выполните:
 +
samba-tool dns delete localhost test.altlinux host-51 A 192.168.3.51 -U 'Administrator%Pa$$word'
  
 
= Troubleshooting =
 
= Troubleshooting =

Текущая версия на 17:03, 20 марта 2021

Samba logo.png

Использование Samba 4 в роли контроллера домена Active Directory. Такой способ позволяет вводить Windows 7/8 в домен безо всяких манипуляций с реестром.

Возможности[править]

Поддерживаются базовые возможности Active Directory:

  • Аутентификация рабочих станций Windows и Linux и служб;
  • Авторизация и предоставление ресурсов;
  • Групповые политики (GPO);
  • Перемещаемые профили (Roaming Profiles);
  • Поддержка инструментов Microsoft для управления серверами (Remote Server Administration Tools) с компьютеров под управлением Windows (под WINE не работает);
  • Поддержка протоколов SMB2 и SMB3 (в том числе с поддержкой шифрования);
  • Репликация с другими серверами (в том числе с Windows 2012).

Не поддерживается[править]

Не поддерживаются следующие возможности[1]:

  • Не реплицируется хранилище SYSVOL (можно использовать osync[2][3]);
  • Доверительные отношения только в одном направлении (от Windows к Samba, но не наоборот[4]) (что не позволяет реализовать лес доменов);
  • Не поддерживаются поддомены[5];
    • В Samba отсутствует глобальный каталог (GC) и полноценная поддержка фантомных объектов;
    • Проблемы при построении структуры AD (Active Directory browser), проблемы при поиске объектов в другом домене;
    • При применении групповых политик в многодоменной среде могут быть проблемы с определением, в каком домене находится компьютер;
  • DFS работает только в режиме одиночного сервера;
  • Не реализовано DFS-R;
  • Не полностью реализовано RODC;
  • Ограничения размера базы TDB в 4 ГБ. Это ограничение приводит к невозможности перехода от леса доменов к плоской структуре с одним доменом.[6]
  • Не закончено тестирование поддержки CTDB (хранение данных в кластерной инфраструктуре);
  • Не закончено тестирование работы Winbind.

Смотрите также статью Возможности и ограничения Samba 4 как контроллера домена Active Directory на http://habrahabr.ru/.

Внимание! Samba AD DC несовместима с OpenLDAP и MIT Kerberos, поэтому службы, использующие MIT Kerberos, несовместимы с ним.
Внимание! Samba AD DC функционирует на уровне контроллера доменов Windows 2008 R2. Вы можете ввести его в домен Windows 2012 как клиента, но не как контроллер домена.


Установка[править]

1. Установите пакет task-samba-dc  с версии 4.3.1 , который установит необходимое.

Примечание: До версии 4.3.1 требовалось явно установить пакеты: samba-DC python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-client krb5-kinit


2. Так как Samba в режиме контроллера домена (Doman Controller, DC) использует как свой LDAP, так и свой сервер Kerberos, несовместимый с MIT Kerberos, перед установкой остановите конфликтующие службы krb5kdc и slapd, а также bind:

Примечание: Вы так же можете отключить службы и выключить автозагрузку служб графическим способом. В ALT Linux Server зайдите в Система > Администрирование > ЦУС > Режим эксперта> Системные службы.
for service in smb nmb krb5kdc slapd bind; do chkconfig $service off; service $service stop; done

Создание нового домена[править]

Восстановление к начальному состоянию samba[править]

Очищаем базы и конфигурацию Samba (если уже создавался домен):

rm -f /etc/samba/smb.conf
rm -rf /var/lib/samba
rm -rf /var/cache/samba
mkdir -p /var/lib/samba/sysvol
Внимание! Обязательно удаляйте /etc/samba/smb.conf перед созданием домена:
rm -f /etc/samba/smb.conf


Выбор имени домена[править]

Имя домена для разворачиваемого DC должно состоять минимум из двух компонентов, разделённых точкой.

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

  • HOSTNAME=dc.school.alt в /etc/sysconfig/network
  • # hostname dc.school.alt
  • # domainname school.alt
Внимание! При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon.


Создание домена одной командой[править]

Создание контроллера домена school.alt с паролем администратора Pa$$word:

samba-tool domain provision --realm=school.alt --domain school --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307

Интерактивное создание домена[править]

Примечание: У Samba свой собственный DNS-сервер. В DNS forwarder IP address нужно указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена.

В примере показано создание домена school.alt.

Запустите samba-tool domain provision:

# samba-tool domain provision
Realm [SCHOOL.ALT]: 
 Domain [SCHOOL]: 
 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) [127.0.0.1]: 
Administrator password: 
Retype password: 
Looking up IPv4 addresses
More than one IPv4 address found. Using 192.168.1.1
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=school,DC=alt
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=school,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              c228
NetBIOS Domain:        SCHOOL
DNS Domain:            school.alt
DOMAIN SID:            S-1-5-21-80639820-2350372464-3293631772

При запросе ввода нажимайте Enter за исключением запроса пароля администратора («Administrator password:» и «Retype password:»).

Примечание: Пароль администратора должен быть не менее 7 символов и содержать символы как минимум трёх групп из четырёх возможных: латинских букв в верхнем и нижнем регистрах, чисел и других небуквенно-цифровых символов.


Параметры --use-rfc2307 --use-xattrs=yes позволяют поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.

Запуск службы[править]

Установите службу по умолчанию и запустите её:

chkconfig samba on
service samba start
Примечание: Если служба после установки никаким способом не запускается, перезагрузите сервер


Настройка Kerberos[править]

Откройте от имени суперпользователя файл /etc/krb5.conf.

Раскомментируйте строку "default realm" и введите название области заглавными буквами.

Ниже, под строкой [realms] вместо EXAMPLE.COM введите название области, а вместо example.com в "default domain" введите IP-адрес сервера с Samba.

Под строкой [domain_realm] example.com и EXAMPLE.COM замените на ваш домен сохраняя регистр.

Альтернативный вариант[править]

В момент создания домена Samba автоматически конфигурирует шаблон файла krb5.conf для вашего домена, и оставляет его в директории /var/lib/samba/private/krb5.conf

Как следствие, можно его просто скопировать с заменой:

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

Проверка работоспособности[править]

1. Общая информация о домене:

# samba-tool domain info 127.0.0.1
Forest           : school.alt
Domain           : school.alt
Netbios domain   : SCHOOL
DC name          : c228.school.alt
DC netbios name  : C228
Server site      : Default-First-Site-Name
Client site      : Default-First-Site-Name

2. Просмотр предоставляемых служб:

# smbclient -L localhost -U administrator
Enter administrator's password: 
Domain=[SCHOOL] OS=[Unix] Server=[Samba 4.0.21]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      
        sysvol          Disk      
        IPC$            IPC       IPC Service (Samba 4.0.21)
Domain=[SCHOOL] OS=[Unix] Server=[Samba 4.0.21]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        SCHOOL.ALT           C228
        WORKGROUP            HOST-15

3. Проверка конфигурации DNS

3.1 Убедитесь в наличии nameserver 127.0.0.1 в /etc/resolv.conf:

host school.alt

3.2 Проверяем имена хостов:

  • адрес _kerberos._udp.*адрес домена с точкой
# host -t SRV _kerberos._udp.school.alt.
_kerberos._udp.school.alt has SRV record 0 100 88 c228.school.alt.
  • адрес _ldap._tcp.*адрес домена с точкой
# host -t SRV _ldap._tcp.school.alt.
_ldap._tcp.school.alt has SRV record 0 100 389 c228.school.alt.
  • адрес хоста.*адрес домена с точкой
# host -t A c228.school.alt.
c228.school.alt has address 192.168.1.1

Если имена не находятся, проверяйте выключение службы named.

4. Проверка Kerberos:

Внимание! Имя домена должно быть в верхнем регистре, иначе выдаст:
kinit: KDC reply did not match expectations while getting initial credentials
# kinit administrator
Password for administrator@SCHOOL.ALT: 
Warning: Your password will expire in 41 days on Вт 11 ноя 2014 08:58:30

Просмотр полученного билета:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SCHOOL.ALT

Valid starting       Expires              Service principal
30.09.2014 10:23:54  30.09.2014 20:23:54  krbtgt/SCHOOL.ALT@SCHOOL.ALT
        renew until 01.10.2014 10:23:45
Внимание! Для серверов, не внесённых в зону обратного просмотра DNS, авторизация через nslcd по GSSAPI будет вылетать с диагностикой:
Local error: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server not found in Kerberos database)


Управление пользователями[править]

Создать пользователя с паролем[7], :

samba-tool user create <имя пользователя>
samba-tool user setexpiry <имя пользователя>

Например,

samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'

Просмотреть доступных пользователей:

samba-tool user list

Удалить пользователя:

samba-tool user delete <имя пользователя>

Отключить пользователя:

samba-tool user disable <имя пользователя>

Включить пользователя:

samba-tool user enable <имя пользователя>

Изменить пароль пользователя:

samba-tool user setpassword <имя пользователя>

Не забудьте разблокировать пользователя:

samba-tool user setexpiry <имя пользователя> --noexpiry


Внимание! Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [8]


Если компьютер с таким именем заведён, удалить его можно командой:

pdbedit -x -m <имя>

Добавить группу:

samba-tool group add groupname

Добавить UNIX-группу:

samba-tool group add groupname --nis-domain=samdom --gid-number=<next available GID>

Удалить группу:

samba-tool group delete groupname

Добавить пользователя в группу:

samba-tool group addmembers "Domain Users" user
samba-tool group addmembers "Domain Users" user,user1,user2

Удалить пользователя из группы:

samba-tool group removemembers "Domain Users" user
samba-tool group removemembers "Domain Users" user,user1,user2

Пользователи группы:

samba-tool group listmembers "Domain Users" | grep username

Группы пользователя:

samba-tool user show username

Смотрим значение memberOf.

Заведение вторичного DC[править]

Подробная инструкция на английском языке: https://wiki.samba.org/index.php/Join_a_domain_as_a_DC

Имя узла: dc2.school.alt (192.168.1.106). Предполагается, что пакет task-samba-dc уже установлен.

1. Заводим IP-адрес для dc2 на PDC (с версии Samba 4.7 и выше - запись вносится автоматически):

Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
# samba-tool dns add 192.168.1.1 school.alt DC2 A 192.168.1.106 -Uadministrator

2. На dc2.school.alt правим файл /etc/krb5.conf:

[libdefaults]
default_realm = SCHOOL.ALT
dns_lookup_realm = true
dns_lookup_kdc = true
Примечание: Перед вводом в домен в resolvconf обязательно должен быть добавлен PDC как nameserver.


3. Получаем билет и убеждаемся, что билет получен:

Внимание! Имя домена должно быть указано в верхнем регистре
# kinit administrator@SCHOOL.ALT
Password for administrator@SCHOOL.ALT: 
Warning: Your password will expire in 37 days on Пт 14 ноя 2014 14:31:40
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SCHOOL.ALT

Valid starting       Expires              Service principal
07.10.2014 18:51:01  08.10.2014 04:51:01  krbtgt/SCHOOL.ALT@SCHOOL.ALT
        renew until 08.10.2014 18:50:51

4. Вводим в домен:

# samba-tool domain join school.alt DC -Uadministrator --realm=school.alt

Если всё нормально, в конце видим:

Joined domain SCHOOL (SID S-1-5-21-80639820-2350372464-3293631772) as a DC

5. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 192.168.1.106).

6. Делаем службу samba запускаемой по умолчанию:

# chkconfig samba on

7. Запускаем службу, соответственно:

# service samba start

Репликация[править]

Внимание! Помните, что без успешной двунаправленной репликации в течение 14 дней DC исключается из Active Directory
Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!

1. Реплицируем на вторичном DC (с первичного):

# samba-tool drs replicate dc2.school.alt c228.school.alt dc=school,dc=alt -Uadministrator

(сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP).

2. Реплицируем на вторичном DC (на первичный):

# samba-tool drs replicate с228.school.alt dc2.school.alt dc=school,dc=alt -Uadministrator

(сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP).

Примечание: Имя домена в именах серверов можно опустить (если они одинаковые)


3. Просмотр статуса репликации на PDC:

# samba-tool drs showrepl
Примечание: Если репликация на Windows не работает, добавьте в Active Directory Sites and Services новое соединение Active Directory. Реплицируйте на DC, подождите минут 5 и пробуйте реплицировать с Samba на Windows


Ссылки[править]

Советы[править]

  • Введите в домен машину с Windows, установите на неё Remote Server Administration Tools и управляйте доменом из графического интерфейса.
  • Для того, чтобы посмотреть конфигурацию LDAP контроллера домена, получите билет Kerberos (через kinit) и выполните:
ldapsearch -LLL -b '' -s base -x
  • Для отключения проверки необходимой длины и стойкости паролей выполните:
samba-tool domain passwordsettings set --complexity=off
samba-tool domain passwordsettings set --history-length=0
samba-tool domain passwordsettings set --min-pwd-age=0
samba-tool domain passwordsettings set --max-pwd-age=0
  • Для просмотра всех записей DNS домена выполните:
samba-tool dns query localhost test.altlinux '@' ALL -U 'Administrator%Pa$$word'
  • Для удаления заведённого хоста выполните:
samba-tool dns delete localhost test.altlinux host-51 A 192.168.3.51 -U 'Administrator%Pa$$word'

Troubleshooting[править]

Если домен не создаётся с ошибкой типа ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2241
Удалите директиву include или includedir в /etc/krb5.conf[9]