====== Контроллер домена SAMBA 4 ======
* [[https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller|Setting up Samba as an Active Directory Domain Controller]]
* [[https://medium.com/p/d284cd3f5db4|Доменный контроллер Samba4]]
===== Установка Samba4 из пакетов =====
==== Debian/Ubuntu ====
# apt update
# apt install samba winbind
# rm /etc/samba/smb.conf
===== Инициализация домена =====
server# samba-tool domain provision --use-rfc2307 --interactive
...
Realm [CORPX.UN]:
Domain [CORPX]:
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) [172.16.1.254]:
Administrator password: Pa$$w0rd
Retype password: Pa$$w0rd
...
===== Запуск сервиса =====
* [[Настройка KDC серверов и клиентов#Настройка Kerberos клиента]]
server#### cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
server# testparm
debian# systemctl disable smbd
debian# systemctl unmask samba-ad-dc.service # в debian12, похоже, не нужно
debian# systemctl enable samba-ad-dc.service # в debian12, похоже, не нужно
server# cat /etc/samba/smb.conf
[global]
ldap server require strong auth = no
...
server# init 6
gate# ssh server2
server# cat /etc/resolv.conf
search corpX.un
nameserver 127.0.0.1
===== Управление доменом =====
==== Управление пользователями ====
* [[https://wiki.samba.org/index.php/Adding_users_with_samba_tool|Adding users with samba tool]]
# samba-tool user create user1 'Pa$$w0rd1' --given-name Ivan --initials I --surname Ivanov --uid-number 10001 --gid-number 10001 --login-shell /bin/bash --unix-home /home/user1
# samba-tool group add guser1 --nis-domain=CORP13 --gid-number=10001
# samba-tool user create user2 --given-name Petr --initials P --surname Petrov
# samba-tool user setpassword user2
# samba-tool user list
# samba-tool group addmembers group1 user4
==== Управление DNS ====
* [[https://wiki.samba.org/index.php/DNS_Administration|wiki.samba DNS Administration]]
# kinit Administrator
# samba-tool dns add server corpX.un gate A 192.168.X.1
# samba-tool dns delete server corpX.un gate A 192.168.X.1
# samba-tool dns add server corpX.un _xmpp-client._tcp SRV 'gate.corpX.un 5222 0 0'
# samba-tool dns add server corpX.un @ MX "server.corpX.un 1"
==== Управление всем остальным ====
* [[Материалы по Windows#Развертывание средств администрирования Active Directory]]
===== Настройка контроллером существующего домена =====
* [[https://wiki.samba.org/index.php/Joining_a_Samba_DC_to_an_Existing_Active_Directory|Joining a Samba DC to an Existing Active Directory]]
* [[https://habr.com/ru/post/450572/|Samba DC в качестве второго контроллера в домене AD Windows 2012R2 и перемещаемые папки для клиентов на Windows и Linux]]
* [[https://wiki.astralinux.ru/pages/viewpage.action?pageId=27363212|Присоединение Samba к существующему домену AD]]
* [[https://www.rebeladmin.com/2016/01/step-by-step-guide-to-downgrade-domain-and-forest-functional-level/|Step by Step Guide to downgrade domain and forest functional level]]
* [[https://dzen.ru/a/Y0LrkjKfFBoi30Pi|Миграция Active Directory с Windows Server 2022 на Ubuntu 22.04 + Samba 4.15.13]]
==== Уровень леса и домена ====
* [[https://wiki.samba.org/index.php/Raising_the_Functional_Levels|Raising the Functional Levels]] - версии Samba и уровни леса/домена
PS C:\Users\Administrator> Get-ADForest
PS C:\Users\Administrator> Get-ADDomain
PS C:\Users\Administrator> Set-ADForestMode –Identity "corpX.un" -ForestMode Windows2008R2Forest
PS C:\Users\Administrator> Set-ADDomainMode –Identity "corpX.un" –DomainMode Windows2008R2Domain
* [[Настройка KDC серверов и клиентов#Настройка Kerberos клиента]]
server2# kinit administrator
server2# samba-tool domain join corpX.un DC -k yes --dns-backend=SAMBA_INTERNAL --option="dns forwarder=172.16.1.254"
* [[#Запуск сервиса]]
==== Настройка репликации ====
* [[https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/f977faaa-673e-4f66-b9bf-48c640241d47|[MS-DRSR]: Directory Replication Service (DRS) Remote Protocol]]
* [[https://wiki.samba.org/index.php/SysVol_replication_(DFS-R)|SysVol replication (DFS-R)]]
* [[https://wiki.samba.org/index.php/Robocopy_based_SysVol_replication_workaround|Robocopy based SysVol replication workaround]]
server2# samba-tool drs showrepl
server2# samba-tool user list
server2# samba-tool user create user4 'Pa$$w0rd4' --given-name 'Василий' --initials 'М' --surname 'Кошкин' #--mail-address=user4@corpX.un
В AD появится с задержкой до 10 минут
server2# samba-tool ldapcmp ldap://server.corpX.un ldap://server2.corpX.un -Uadministrator
Допустимы ERROR, но должны быть и SUCCESS
server2# find /var/lib/samba/sysvol
PS C:\Users\Administrator> robocopy \\SERVER\SYSVOL\corpX.un\ \\SERVER2\SYSVOL\corpX.un\ /mir /sec
server2# find /var/lib/samba/sysvol | grep aas
server2# ### samba-tool ntacl sysvolcheck
ошибки
===== Замена MS AD на Samba4 =====
* [[https://medium.com/@alexander.bazhenov/%D0%BC%D0%B8%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0-windows-2008r2-%D0%B2-samba4-4718c15c44c8|Миграция доменного контроллера Windows 2008R2 в Samba4]]
==== Переносим FSMO на новый сервер ====
* Flexible Single Master Operations
* [[https://habr.com/ru/post/133370/|Все что вы хотели знать о мастерах операций, но боялись спросить]]
* [[https://winitpro.ru/index.php/2012/03/06/peredacha-rolej-fsmo/|Передача/захват ролей FSMO на другой контроллер домена Active Directory]]
server2# samba-tool fsmo show
попробовать# samba-tool fsmo seize --role=all
PS C:\Users\Administrator> ntdsutil
roles
connections
connect to server server2
q
transfer naming master
transfer infrastructure master
transfer rid master
transfer schema master
transfer pdc
q
q
server2# samba-tool fsmo seize --role=forestdns
server2# samba-tool fsmo seize --role=domaindns
server2# samba-tool fsmo show | grep SERVER2
==== Удаляем старый сервер ====
* Останавливаем SERVER
server2# nslookup -q=SRV _kerberos._tcp.corpX.un
server2# samba-tool domain demote --remove-other-dead-server=SERVER
server2# nslookup -q=SRV _kerberos._tcp.corpX.un