Samba 4 как резервный доменный контроллер
Из записки вы узнаете, как сделать вторичный доменный контроллер BDC (Backup domain controler). Помимо Samba, потребуется установить DNS и DHCP службы. Так как первый DC раздает IP адреса в диапазоне 10.168.50.50 - 149, второму серверу укажем иной диапазон, чтобы он не пересекался с первым - 10.168.50.150 - 254.
Написанная инструкция, почти копия уже опубликованного поста "Samba4 как DC", но с некоторыми отличиями...
Исходные данные:
Доменная зона - company.ru
Главный доменный контроллер - companypdc.company.ru
Резервный доменный контроллер - sdc.company.ru
ip-адрес главного контролера - 10.168.50.2
ip-адрес резервного контроллера - 10.168.50.3
В моем случае главный контроллер на CentOS 7, вторичный тоже на CentOS 7. Хотя вы можете сделать первичным Windows DC.
1. Настройка сетевого адаптера и имени хоста (сервера)
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
DEVICE=enp0s8
HWADDR=08:00:27:04:5A:BD
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.168.50.3 # IP-адрес резервного контроллера домена
NETMASK=255.255.255.0
GATEWAY=10.168.50.1 # выход в Интернет
# vi /etc/hostname
hostname=sdc
2. Отключаем SELINUX и iptables
# vi /etc/selinux/config
selinux=disabled
# setenforce 0
# systemctl disable firewalld
# systemctl stop firewalld
3. Установка зависимостей
# yum install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils perl openldap-devel net-tools mc -y
4. Настройка DNS
# vi /etc/resolv.conf
nameserver 10.168.50.2 # DNS сервер первичный доменный контроллер
nameserver 10.168.50.3 # DNS сервер вторичный текущий сервер
domain company.ru
5. Загрузка и установка Samba 4 из исходников
# wget http://ftp.samba.org/pub/samba/samba-4.3.1.tar.gz
# tar -xzvf samba-4.3.1.tar.gz
# cd samba-4.3.1/
# ./configure --enable-selftest --with-systemd
# make && make install
# rm /usr/local/samba/etc/smb.conf
Добавляем каталог Samba4 в Path, чтобы запускать утилиты samba без указания пути /usr/local/samba/bin/
# echo 'pathmunge /usr/local/samba/bin/' > /etc/profile.d/custompath.sh
# chmod +x /etc/profile.d/custompath.sh
# . /etc/profile
6. Создаем юнит для запуска Samba
# vi /etc/systemd/system/samba4.service
[Unit]Description= Samba 4 Active DirectoryAfter=syslog.targetAfter=network.target[Service]Type=forkingPIDFile=/usr/local/samba/var/run/samba.pidExecStart=/usr/local/samba/sbin/samba[Install]WantedBy=multi-user.target
Запускаем Samba:
# systemctl enable samba4
# systemctl start samba4
7. Установка и настройка NTP
NTP - это протокол синхронизации времени по сети. По существу клиенты запрашивают текущее время на сервере и используют его для установки своих собственных часов. Правильное настроенное время требуется для работы Kerberos, если оно будет некорректным, клиенты не смогут пройти аутентификацию на вашем сервере.
Установка NTP:
# yum install ntp -y
Настройка NTP:
Сохраняем текущий конфигурационный файл /etc/ntp.conf
# mv /etc/ntp.conf /etc/ntp.conf.orig
И создаем свой файл настроек:
# vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 20
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
Если время не обновляется, увеличьте значение stratum.
Ставим правильное время:
# vi /etc/sysconfig/clock
ZONE="Asia/Almaty"
UTC=falseARC=true
# mv /etc/localtime /etc/localtime.bak
# ln -s /usr/share/zoneinfo/Asia/Almaty /etc/localtime
# systemctl restart ntpd
Проверяем дату и время, оно должно быть актуальное:
# date
8. Настройка Kerberos
# vi /etc/krb5.conf
[libdefaults]
default_realm = COMPANY.RU
dns_lookup_realm = true
dns_lookup_kdc = true
Проверка соединения с главным контроллером:
# kinit Administrator
Password: *********
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@COMPANY.RU
Valid starting Expires Service principal
06/09/13 02:13:41 06/09/13 12:13:45 krbtgt/COMPANY.RU@COMPANY.RU
renew until 06/16/13 02:13:41
# systemctl restart samba4
# systemctl restart named
9. Добавляем в доменную сеть вторичный контроллер SDC
# samba-tool domain join company.ru DC -UAdministrator --realm=company.ru --dns-backend=BIND9_DLZ
10. Добавление записей в зону DNS на первичном сервере
На первичном доменном контроллере проделываем следующею инструкцию:
Добавляем A запись чтобы можно было обращаться ко второму КД по имени, эта запись не прописывается автоматически, поэтому делаем все в ручную:
[root@companypdc ~]# samba-tool dns add 10.168.50.2 company.ru sdc A 10.168.50.3
Сразу же проверяем прямую А запись DNS:
[root@companypdc ~]# host -t A sdc.company.ru.
После того как вы присоединили новый контроллер DC, он прописывается в базе Active Directory первичного DC. Но этого мало для нормальной работы, надо сделать запрос к базе AD и вывести его уникальный идентификатор объекта - "objectGUID", полученный идентификатор требуется прописать на DNS сервере первого сервера:
[root@companypdc ~]# ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid
# record 1dn: CN=NTDS Settings,CN=SDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=company,DC=ruobjectGUID: d2f7a182-32d0-4180-b1c8-ddb972586b2d# record 2dn: CN=NTDS Settings,CN=COMPANYPDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=company,DC=ruobjectGUID: 18005395-7be1-496d-a212-f558490c3468# returned 2 records# 2 entries# 0 referrals
При вводе второго сервера "sdc.company.ru" в домен, ему был присвоен уникальный номер "d2f7a182-32d0-4180-b1c8-ddb972586b2d" , этот номер есть в базе Active Directory, но его нет в DNS. Теперь нам надо внести в специальную зону DNS (_msdcs.company.ru) запись о нашем втором сервере, чтобы другие серверы и компьютеры, могли работать со вторым DC. Эта зона DNS используется для обнаружения служб AD:
[root@companypdc ~]# samba-tool dns add 10.168.50.2 _msdcs.company.ru d2f7a182-32d0-4180-b1c8-ddb972586b2d CNAME sdc.company.ru -UAdministrator
Password for [COMPANY\Administrator]:Record added successfully
Проверяем, правильно ли прописался наш второй сервер DC в зоне DNS:
[root@companypdc ~]# host -t CNAME d2f7a182-32d0-4180-b1c8-ddb972586b2d._msdcs.company.ru.
d2f7a182-32d0-4180-b1c8-ddb972586b2d._msdcs.company.ru is an alias for sdc.company.ru.
Не обязательно или даже совсем не нужно, но можно, прописать в опции forward DNS сервер имен первичного DC, чтобы запросы пересылались в PDC:
# vi /usr/local/samba/etc/smb.conf
Добавить DNS сервер первичного DC:
[global]
dns forwarder = 10.168.50.2
Если у вас будет два перенаправления в /etc/named.conf и /usr/local/samba/etc/smb.conf. То DNS запросы, будут с паузой.
11. Репликация
Можно приступать к репликации(синхронизации данных каталога AD), зайдите на второй сервер и выполните команды:
На всякий случай перезапускаем демон Samba4:
# systemctl restart samba4
И производим репликацию:
# samba-tool drs showrepl
12. Проверка
Для проверки создайте любую учетную запись на вторичном контроллере, я создал "ivanka":
[root@sdc ~]# samba-tool user add ivanka
После чего выведите список пользователей на первичном контроллере:
[root@companypdc ~]# samba-tool user list
Найдите в списке учетную запись "ivanka".
Попытайтесь зайти в клиентский компьютер используя резервный контроллер домена, все должно работать!
13. Настройка DDNS
По умолчанию named (Bind) запускается во время загрузки ОС через юнит systemd. С этого юнита можно управлять локально запуском и остановом службы named. Однако когда named уже запущен, может появиться необходимость перезапустить его по каким-либо другим причинам, в том числе и для того, чтобы сервер имен проверил наличие обновлений в файлах зон. Для этих целей пакет BIND включает в себя инструмент удаленного управления сервером имен (Remote Name Daemon Control), он же rndc.
Утилита rndc-confgen настраивает rndc генерируя конфигурационный файл для управления named.
# rndc-confgen -a -r /dev/urandom
После настройки rndc, нужно настроит конфигурационный файл named (Bind):
# vi /etc/named.conf
options {listen-on port 53 { 10.0.10.10; 10.168.50.3; 127.0.0.1; }; # Bind слушает порт 53 на всех сетевых интерфейсах# listen-on-v6 port 53 { ::1; }; # Отключаем слушать IPv6# recursion yes;forwarders {8.8.4.4; }; # Включаем пересылку запросов, в случаем если наш DNS сервера не знает что делать на Google public DNS servernotify no; # отключаем посылку сообщения о обновлении зоныallow-query { 10.168.50.0/24; 127.0.0.0/8; }; # Добавляем хосты и сети, которым разрешено использовать DNS серверallow-recursion { 10.168.50.0/24; 127.0.0.0/8; }; # Добавляем хосты и сети, которым разрешено использовать кому разрешено выполнять рекурсивные запросыallow-update { 10.168.50.0/24; 127.0.0.0/8; }; # Добавляем хосты и сети, от которых можно динамически обновлять зонуversion none; # Скрываем версию Bindhostname none; # Скрываем имя хостаserver-id none; # Скрываем идентификатор сервераdnssec-enable no; # Отключаем DNSSEC, чтобы заработал FORWARDING - пересылка запросовdnssec-validation no; # Отключаем проверку по DNSSECtkey-gssapi-keytab "/usr/local/samba/private/dns.keytab"; # Динамическое обновление зоны, компьютеры автоматически добавляются в прямую зонуtkey-domain "company.ru";};controls {inet 127.0.0.1 port 953allow { 127.0.0.1; } keys { "rndc-key"; };};key "rndc-key" {algorithm hmac-md5;secret "9ls220K+4zO3N3YAvZXg=="; # берем из файла /etc/rndc.key};include "/usr/local/samba/private/named.conf"; # Добавляем плагин DLZ чтобы Samba работала с Bind
Вот полный файл named.conf:
# vi /etc/named.conf
options {listen-on port 53 { 10.0.10.10; 10.168.50.3; 127.0.0.1; };# listen-on-v6 port 53 { ::1; };directory "/var/named";dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";# allow-query { localhost; };########MY SETTINGS########forwarders {8.8.4.4; }; # Включаем пересылку запросов, в случаем если наш DNS сервера не знает что делать на Google public DNS servernotify no; # отключаем посылку сообщения о обновлении зоныallow-query { 10.168.50.0/24; 127.0.0.0/8; 10.0.10.0/24; }; # Добавляем хосты и сети, которым разрешено использовать DNS серверallow-recursion { 10.168.50.0/24; 127.0.0.0/8; 10.0.10.0/24; }; # Добавляем хосты и сети, которым разрешено использовать кому разрешено выполнять рекурсивные запросыallow-update { 10.168.50.0/24; 127.0.0.0/8; 10.0.10.0/24; }; # Добавляем хосты и сети, от которых можно динамически обновлять зонуversion none; # Скрываем версию Bindhostname none; # Скрываем имя хостаserver-id none; # Скрываем идентификатор сервераtkey-gssapi-keytab "/usr/local/samba/private/dns.keytab"; #tkey-domain "company.ru";########MY SETTINGS######### recursion yes;dnssec-enable no;dnssec-validation no;dnssec-lookaside auto;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";pid-file "/run/named/named.pid";session-keyfile "/run/named/session.key";};logging {channel default_debug {file "data/named.run";severity dynamic;};};zone "." IN {type hint;file "named.ca";};controls {inet 127.0.0.1 port 953allow { 127.0.0.1; } keys { "rndc-key"; };};key "rndc-key" {algorithm hmac-md5;secret "5028ANZBdRiP/KXv9DNBvQ=="; # берем из файла /etc/rndc.key};include "/etc/named.root.key";#include "/etc/named.rfc1912.zones";include "/usr/local/samba/private/named.conf"; # Добавляем плагин DLZ чтобы Samba работала с Bind
Также требуется указать сервер DNS в файле /etc/resolv.conf
# vi /etc/resolv.conf
domain company.ru
search company.ru
nameserver 10.168.50.2 #DNS вторичного сервера
nameserver 10.168.50.1 #DNS первичного сервера
И убрать внешний DNS сервер Google, теперь запросы будут перенаправлятся из named на Google DNS. Так как мы оставили там строчку forwardind {8.8.8.8;}; , а также мы поставили перенаправление через конфигурационный файл Samba4 smb.conf - dns forwader = 8.8.8.8
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
DEVICE=enp0s8
HWADDR=08:00:27:04:5A:BD
TYPE=Ethernet
ONBOOT=yes # Включение адаптера при загрузке ОС
NM_CONTROLLED=no
BOOTPROTO=static # Статический IP адрес
IPADDR=10.168.50.3 # IP-адрес контроллера домена
NETMASK=255.255.255.0
GATEWAY=10.168.50.1 # адрес роутера - выход в Интернет
#DNS1=8.8.8.8 # Удаляем Google public DNS, теперь он прописан в /etc/named.conf и все другие
Чтобы заработало динамическое обновление обратной зоны, измените конфигурационный файл Samba4.
# Global parameters[global]workgroup = COMPANYrealm = company.runetbios name = COMPANYPDCserver role = active directory domain controllerserver services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, smbdcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvcidmap_ldb:use rfc2307 = yeskerberos method = system keytabclient ldap sasl wrapping = signallow dns updates = nonsecure and secure#nsupdate command = /usr/bin/nsupdate -g -dnsupdate command = /usr/local/samba/sbin/samba_dnsupdate -d 3[netlogon]path = /usr/local/samba/var/locks/sysvol/company.ru/scriptsread only = Nowrite ok = Yes[sysvol]path = /usr/local/samba/var/locks/sysvolread only = Nowrite ok = Yes
Жирным шрифтом помечены добавленные настройки мною.
Перезапускаем сетевую службы, демон named и samba4, чтобы настройки начали работать.
# systemctl restart network
# systemctl restart named
# systemctl restart samba4
Устанавливаем DHCP сервер:
# yum install dhcp -y
Сохраняем оригинальный файл настроек DHCP:
# mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig
Создаем новый конфигурационный файл /etc/dhcp/dhcpd.conf
# vi /etc/dhcp/dhcpd.conf
authoritative;server-identifier sdc.company.ru;ddns-update-style interim;ddns-updates on;ddns-domainname "company.ru";ddns-rev-domainname "in-addr.arpa";update-static-leases true;ignore client-updates;include "/etc/rndc.key";zone company.ru. { # Forward zone to be updatedprimary 127.0.0.1;key rndc-key;}zone 50.168.10.in-addr.arpa. { # Backward zone to be updatedprimary 127.0.0.1;}subnet 10.168.50.0 netmask 255.255.255.0 {#####################on commit {set noname = concat("dhcp-", binary-to-ascii(10, 8, "-", leased-address));set ClientIP = binary-to-ascii(10, 8, ".", leased-address);set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));set ClientName = pick-first-value(option host-name, host-decl-name, config-option host-name, noname);log(concat("Commit: IP: ", ClientIP, " Mac: ", ClientMac, " Name: ", ClientName));execute("/usr/local/sbin/dhcp-dyndns.sh", "add", ClientIP, ClientName, ClientMac);}#################on release {set ClientIP = binary-to-ascii(10, 8, ".", leased-address);set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));log(concat("Release: IP: ", ClientIP, " Mac: ", ClientMac));# cannot get a ClientName here, for some reason that always failsexecute("/usr/local/sbin/dhcp-dyndns.sh", "delete", ClientIP, "", ClientMac);}#################on expiry {set ClientIP = binary-to-ascii(10, 8, ".", leased-address);# cannot get a ClientMac here, apparently this only works when actually receiving a packetlog(concat("Expired: IP: ", ClientIP));# cannot get a ClientName here, for some reason that always failsexecute("/usr/local/sbin/dhcp-dyndns.sh", "delete", ClientIP, "", "0");#####################}# --- default gateway#option options-135 "company.ru"#option domain-list "company.ru";option routers 10.168.50.2;option subnet-mask 255.255.255.0;option nis-domain "company.ru";option domain-name "company.ru";option domain-search "company.ru";option domain-name-servers 10.168.50.3, 10.168.50.2;option time-offset 10800; # FEToption ntp-servers 10.168.50.3;option netbios-name-servers 10.168.50.3;# --- Selects point-to-point node (default is hybrid). Don't change this unless# -- you understand Netbios very welloption netbios-node-type 2;range 10.168.50.150 10.168.50.220;default-lease-time 1728000;max-lease-time 1728000;allow booting;allow bootp;next-server 10.168.50.3;filename "/pxelinux.0";# we want the nameserver to appear at a fixed addresshost client-1.company.ru {hardware ethernet 00:01:02:03:04:05;fixed-address 10.168.50.50;}}
Создаем файл /usr/local/sbin/dhcp-dyndns.sh
# vi /usr/local/sbin/dhcp-dyndns.sh
#!/bin/shaction=$1ip=$2host=$(echo $3 | awk -F '.' '{print $1}')mac=$4. /usr/local/etc/dhcp-dyndns.confptr=$(echo $ip | awk -F '.' '{print $4"."$3"."$2"."$1".in-addr.arpa"}')/usr/bin/kinit -k -t $keytab $kname@$realmcase "$action" inadd)echo "server $serverupdate delete $host.$domain $time Aupdate add $host.$domain $time A $ipsend"|nsupdate -gecho "server $serverupdate delete $ptr $time PTRupdate add $ptr $time PTR $host.$domainsend"|nsupdate -g;;delete)echo "server $serverupdate delete $host.$domain $time Asend"|nsupdate -gecho "server $serverupdate delete $ptr $time PTRsend"|nsupdate -g;;esac
Даем права на запуск:
# chmod 750 /usr/local/sbin/dhcp-dyndns.sh
# chown dhcpd:dhcpd /usr/local/sbin/dhcp-dyndns.sh
# vi /usr/local/etc/dhcp-dyndns.conf
server=sdcrealm=COMPANY.RUdomain=company.rukeytab=/var/lib/dhcp/dhcp.keytabtime=3600kname=dhcp
# /usr/local/samba/bin/samba-tool user add dhcp --random-password
# /usr/local/samba/bin/samba-tool group addmembers DnsUpdateProxy dhcp
# mkdir /var/lib/dhcp/
# /usr/local/samba/bin/samba-tool domain exportkeytab --princ 'dhcp@COMPANY.RU' -N /var/lib/dhcp/dhcp.keytab # вместо COMPANY.RU укажите свой REALM
# ls -l /var/lib/dhcp/dhcp.keytab
# chown dhcpd:dhcpd /var/lib/dhcp/dhcp.keytab
Запускаем серверную службу DHCP:
# systemctl start dhcpd
Ставим службу в автозагрузку:
# systemctl enable dhcpd
Настройка DHCP сервера со скриптом, позволяет динамически обновлять DNS зоны (добавлять/удалять прямую и обратную запись) . Без скрипта на DHCP сервере и вообще без DHCP, добавляется только А запись, а PTR - нет.
15. Проверка работы вторичного сервера
Отключите первый сервер. И включите какой нибудь клиентский компьютер.
Он должен получить IP адрес автоматически, после чего вы сможете добавить компьютер в домен или авторизоваться на вторичном КД.
Можно проверить SID тестового пользователя AkeHayc:
# wbinfo --name-to-sid AkeHayc
S-1-5-21-3318868730-2373761998-2549699250-2604 SID_USER (1)
Выведенный SID должен быть одинаков на обоих контроллерах, проверьте этот номер на первичном сервере.
16. Настройка общей папки
Открываем файл /usr/local/samba/etc/smb.conf и добавляем в конец файла настройку. В примере доступ открыт всем пользователям домена.
# my share
[data]
path = /data
valid users = +"company.ru\users"
writable = yes
browsable = yes
read only = no
guest ok = yes
public = yes
create mask = 0666
directory mask = 0777
Перечитаем конфиг Samba:
# smbcontrol all reload-config
17. Настройка прав на общею папку
Вообще, в официальном HOWTO Samba4 не рекомендуют держать файлы на контроллере домена, вот цитата:
Whilst the Domain Controller seems capable of running as a full file server, it is suggested that organisations run a distinct file server to allow upgrades of each without disrupting the other. It is also suggested that medium-sized sites should run more than one DC. It also makes sense to have the DC's distinct from any file servers that may use the Domain Controllers. Additionally using distinct file servers avoids the idiosyncrasies in the winbindd configuration on to the Active Directory Domain Controller. The Samba team do not recommend using the Domain Controller as a file server, the recommendation is to run a separate Domain Member with file shares.
То есть при обновлении Samba4, могут возникнуть проблемы и файловый сервер может перестать корректно функционировать. Но, я просто для примера, покажу один из вариантов создания общего ресурса (папки) и как разграничивать права.
Чтобы правильно выставлять права, потребуется настроить службу sssd (https://wiki.samba.org/index.php/Sssd). Это поможет видеть доменных пользователей и групп на ровне с системными.
Если вам не устраивает sssd, вы можете настроить другую аналогичную службу winbind или nslcd (https://wiki.samba.org/index.php/Nslcd).
Устанавливаем sssd:
# yum install realmd samba samba-common oddjob oddjob-mkhomedir sssd ntpdate ntp libini_config check-devel pam-devel libtalloc-devel libtdb-devel libtevent-devel libldb-devel libldb-devel libdhash-devel libcollection-devel libini_config-devel libpcre pcre-devel c-ares-devel glib2-devel dbus-devel libxslt-devel libxml2-devel xml-common docbook-style-xsl libsemanage-devel nss-devel -y
# ldconfig -v | grep sss
ldconfig: Can't stat /libx32: No such file or directoryldconfig: Path `/usr/lib' given more than onceldconfig: Path `/usr/lib64' given more than onceldconfig: Can't stat /usr/libx32: No such file or directorylibnss_sss.so.2 -> libnss_sss.so.2libsss_nss_idmap.so.0 -> libsss_nss_idmap.so.0.1.0libsss_idmap.so.0 -> libsss_idmap.so.0.4.0libsss_sudo.so -> libsss_sudo.solibnsssysinit.so -> libnsssysinit.so
Извлеките файл keytab из текущей конфигурации Kerberos.
Keytab – это файл который содержит Kerberos Principal (хост, пользователь и домен) и ключи шифрования (определяются из пароля Kerberos). Это файл применяется для аутентификации в инфраструктуре Kerberos (при этом не нужно вручную вводить логин и пароль). Служба sssd будет использовать keytab для аутентификации пользователей через протокол Kerberos.
# samba-tool domain exportkeytab /etc/krb5.sssd.keytab --principal=companypdc$
Делаем владельца файла пользователя root:
# chown root:root /etc/krb5.sssd.keytab
Даем разрешение, чтобы только владелец мог читать/записывать в файл:
# chmod 600 /etc/krb5.sssd.keytab
# vi /etc/sssd/sssd.conf
[sssd]services = nss, pamconfig_file_version = 2domains = company.ru[nss][pam][domain/company.ru]# Using id_provider=ad sets the best defaults on its ownid_provider = ad# In sssd, the default access provider is always 'permit'. The AD access# provider by default checks for account expirationaccess_provider = ad# Uncomment to use POSIX attributes on the server# ldap_id_mapping=true# Uncomment if the client machine hostname doesn't match the computer object on the DC.# ad_hostname = companypdc.company.ru# Uncomment if DNS SRV resolution is not working# ad_server = companypdc.company.ru# Uncomment if the domain section is named differently than your Samba domain# ad_domain = company.ru# Enumeration is discouraged for performance reasons.enumerate = true# location of the keytabkrb5_keytab=/etc/krb5.sssd.keytab
Жирным помечены мои изменения.
На созданный файл ставим владельца root:
# chown root.root /etc/sssd/sssd.conf
# chmod 600 /etc/sssd/sssd.conf
Добавьте sss в строчки passwd и group файла /etc/nsswitch.conf, чтобы система могла делать запрос к sss базе.
passwd: files sss
group: files sss
Поставьте службу sssd в автозагрузку:
# systemctl enable sssd
И запустите ее:
# systemctl start sssd
Теперь когда доменные пользователи видны с локальными, делаем простые проверки - три теста:
До начала тестовых проверок, сбросьте кэш sssd:
Тест 1: Вывод учетный записей через команду getent. Она покажет локальные и доменные учетные записи с posix атрибутами. Проверьте вывод, чтобы были все поля с данными из AD (UID, primaryGroup, homeDirectory, shell).
# getent passwd Administrator
demo1:*:10008:10513:demo1:/home/demo1:/bin/bash
Тест 2: Вывод групп через команду getent. А здесь мы должны увидеть локальные и доменные группы с posix атрибутами. Проверьте вывод чтобы он содержал все поля из AD (GID, members).
# getent group demo-group
demo-group:*:10015:demo1
Тест 3: Измените локального владельца (владелец/группа) на файла, укажите нового владельца из домена:
# touch /tmp/testfile
# chown Administrator:"Domain Users" /tmp/testfile
# ls -l /tmp/testfile
-rw-r--r-- 1 Administrator Domain Users 0 30. Aug 19:30 /tmp/testfile
Если все прошло успешно, значить стала доступна возможность, по выставлению прав используя доменных пользователей или групп.
18. Репликация SYSVOL
Папка SYSVOL содержит групповые политики и другие важные данные для работы домена, если у вас появляется второй DC, вам необходимо ее копировать на новый контроллер.
В противном случае просто не будут работать правильно Групповые политики, сценарии входа, общие ресурсы и т.д..
Официальное How To Samba детально описывает репликацию папки SYSVOL через утилиту Rsync - https://wiki.samba.org/index.php/Rsync_based_SysVol_replication_workaround
19. Если у вас проблемы
Смотрите логи. Файлы логов лежат в разных каталогах.
Лог службы named (DNS) лежит в каталоге /var/named/data/
Лог службы dhcpd лежит в общем файле логов системы /var/log/messages
Лог самой Samba 4 можно найти в каталоге /usr/loca/samba/var/log.samba