Для установки и настройки контроллера домена Samba следует задать имя хоста:
sudo ubconfig set config HOSTNAME=pdc.ubdc.ru
Где:
Дополнительно можно отключить поддержку IPv6 у ядра (необязательно):
sudo ubconfig set boot GRUB_CMDLINE_LINUX="ipv6.disable=1"
Включить атрибут ACL
на каталоги /
и /home
:
sudo ubconfig set security MOUNT_ATTR[/,/home]=acl
Задать основной DNS хоста и отключить все DNS полученные по DHCP:
sudo ubconfig set network NETWORK[all]="+ipv4.dns 127.0.0.1 ipv4.ignore-auto-dns yes"
Развернуть домен SAMBA:
sudo ubdomain-server create --type=samba --realm=ubdc.ru --domain=ubdc --dns-forwarder=192.168.1.254 --adminpass=ublinux55!
Где:
Для просмотра информации о домене следует открыть терминал и ввести:
sudo samba-tool domain info 127.0.0.1
Примерный вывод:
Forest : ubdc.ru
Domain : ubdc.ru
Netbios domain : UBDC
DC name : PCD1.ubdc.ru
DC netbios name : PCD1
Server site : Default-First-Site-Name
Client site : Default-First-Site-Name
Настройки домена задаются в конфигурационном файле /etc/samba/smb.conf. Для просмотра содержимого конфигурационного файл следует ввести:
sudo cat /etc/samba/smb.conf
Примерный вывод:
# Global parameters
[global]
# daemon_list="smbd nmbd winbind"
allow dns updates = nonsecure
netbios name = PCD1
realm = UBDC.RU
server role = active directory domain controller
# server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
workgroup = UBDC
idmap_ldb:use rfc2307 = yes
machine password timeout = 0
# map acl inherit = yes
# store dos attributes = yes
# dns update command = /usr/bin/nsupdate -g
# dsdb:schema update allowed = true
[sysvol]
path = /var/lib/samba/sysvol
read only = No
[netlogon]
path = /var/lib/samba/sysvol/ubdctru/scripts
read only = No
Где:
В SambaAD учетные записи пользователей хранятся и управляются централизованно. Это означает, что все пользователи и их данные находятся в единой базе данных на контроллере домена, а не распределены по отдельным машинам. Такой подход упрощает администрирование, позволяет централизованно назначать права, управлять доступом к ресурсам и обеспечивает единую точку входа в домен.
Для создания нового пользователя в домене следует открыть терминал и ввести:
sudo samba-tool user create <username>
Где:
<username> - имя нового пользователя.
После ввода команды создания будет запрошен ввод пароля для нового пользователя. Пароль должен состоять и латинских букв верхнего и нижнего регистра, с использованием цифр и символов.
Для получения списка пользователей в домене следует ввести:
sudo samba-tool user list
Примерный вывод:
krbtgt
Guest
ivanov_ii
Administrator
Для удаления пользователя домена следует открыть терминал и ввести:
sudo samba-tool user delete <username>
Для добавления двухсторонних транзитивных доверительных отношений между двумя доменами необходимо на одном из доменов выполнить команду:
samba-tool domain trust create ubdc.ru --type=forest --direction=both --create-location=both -U admin@ubdc.ru
Где:
Опция | Описание |
---|---|
--type=external | Указывает тип доверительного отношения. Возможные значения: external (внешнее) — устанавливает доверие с внешним доменом, не входящим в текущий лес; forest (лес) — устанавливает доверие между двумя доменами. Такое доверие позволяет аутентификацию и доступ к ресурсам между всеми доменами в этих лесах. |
--direction=incoming | Определяет направление доверия. Значение incoming означает, что только этот Samba-домен будет доверять внешнему домену. То есть внешние пользователи смогут аутентифицироваться в этом домене, но не наоборот. |
--direction=both | Устанавливает двустороннее доверие. Оба домена (или леса) будут доверять друг другу, что позволяет взаимную аутентификацию пользователей и доступ к ресурсам в обе стороны. |
--create-location=local | Указывает, что доверительное отношение создаётся только на стороне этого Samba-сервера. При этом инициатором доверия выступает именно этот домен. |
--create-location=both | Означает, что доверительное отношение создаётся одновременно на этом сервере и на стороне удалённого домена. Это обеспечивает полноценное двустороннее доверие и синхронную настройку. |
Для проверки установленных доверительных отношений следует открыть терминал и ввести:
samba-tool domain trust show ubdc.ru
Если между samba и windows установлены двухсторонние доверительные отношения с типом связи Лес, то рабочую станцию нужно вводить в домен samba через winbind.
Если необходимо настроить односторонние доверительные отношения между сервером Samba и доменом Windows, используется следующая команда:
samba-tool domain trust create msnet.murom -U admin@msnet.murom
В данном случае создаются внешние (External) доверительные отношения, которые:
Для проверки репликации следует открыть терминал и ввести:
sudo samba-tool drs showrepl
Для принудительного запуска репликации следует ввести:
samba-tool drs replicate dc2.ubdc.ru dc1.ubdc.ru dc=ubdc,dc=ru
Где:
Поддержка репликации SysVol через DFS-R или FRS: Репликация SysVol (DFS-R).
Каталог SYSVOL содержит групповые политики и скрипты.
Для настройки двунаправленной репликации следует использовать Rsync и Unison.
На каждом контроллере домена необходимо открыть терминал и установить пакет:
sudo pacman -Sy unison
Создать для SSH публичный ключ командой:
ssh-keygen -t rsa
Выполнить команду копирования публичного ключа:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@PDC1.ubdc.ru
Где:
Для получения доступа к PDC2 следует использовать SSH:
ssh PDC2.ubdc.ru
Если удаленная система ограничивает скорость входящих SSH-соединений, Unison может работать некорректно. Поэтому создается первое SSH-соединение как файл ControlPath в указанном месте, и все последующие соединения будут повторно использовать первое соединение.
Создать каталог для файла управления:
mkdir ~/.ssh/ctl
Выполнить команду создания конфигурации:
cat << EOF > ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/ctl/%h_%p_%r
ControlPersist 1
EOF
На PDC1.ubdc.ru выполнить команды создания файла лога. Рекомендуется включить для этого файла ротацию логов, так как размер данного лога не контролируется.
sudo touch /var/log/sysvol-sync.log
sudo chmod 640 /var/log/sysvol-sync.log
Для файла конфигурации unison следует создать одноименный каталог:
sudo mkdir /root/.unison
Далее необходимо создать файл /root/.unison/default.prf
со следующим содержимым:
root = /var/lib/samba
# Note that 2 x / behind DC2, it is required
root = ssh://root@PDC2.ubdc.ru//var/lib/samba
# Путь синхронизации
path = sysvol
#ignore = Path stats ## ignores /var/www/stats
auto=true
batch=true
perms=0
rsync=true
maxthreads=1
retry=3
confirmbigdeletes=false
servercmd=/usr/bin/unison
copythreshold=0
copyprog = /usr/bin/rsync -XAavz --rsh='ssh -p 22' --inplace --compress --old-args
copyprogrest = /usr/bin/rsync -XAavz --rsh='ssh -p 22' --partial --inplace --compress --old-args
copyquoterem = true
copymax = 1
logfile = /var/log/sysvol-sync.log
Где:
Перед запуском команды сихнронизации на PDC2.ubdc.ru - следует сделать резервное копирование каталога
/var/lib/samba/sysvol
.
Выполнить команду синхронизации:
/usr/bin/rsync -XAavz --log-file /var/log/sysvol-sync.log --delete-after -f"+ */" -f"- *" /var/lib/samba/sysvol root@PDC2.ubdc.ru:/var/lib/samba && /usr/bin/unison
Настройка конфигурации Kerberos выполняется в файле: /etc/krb5.conf
В секции [libdefaults] устанавливается имя домена, используемое по умолчанию:
default_realm = UBDC.RU
В ту же секцию добавляется время жизни билета Kerberos:
ticket_lifetime = 24h
forwardable = true
Пример конфигурации krb5.conf:
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
#[logging]
# default = FILE:/var/log/krb5libs.log
# kdc = FILE:/var/log/krb5kdc.log
# admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = UBDC.RU
udp_preference_limit = 0
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 1d
forwardable = true
rdns = false
# allow_weak_crypto = true
# default_tkt_enctypes = arcfour-hmac
# default_ccache_name = KEYRING:persistent:%{uid}
[realms]
UBDC.RU = {
default_domain = ubdc.ru
}
# Define only if DNS lookups are not working
# AD.EXAMPLE.COM = {
# kdc = server.ad.example.com
# master_kdc = server.ad.example.com
# admin_server = server.ad.example.com
# }
[domain_realm]
pdc = UBDC.RU
# Define only if DNS lookups are not working
# .ad.example.com = AD.EXAMPLE.COM
# ad.example.com = AD.EXAMPLE.COM
#[appdefaults]
# pam = {
# ticket_lifetime = 1d
# renew_lifetime = 1d
# forwardable = true
# proxiable = false
# minimum_uid = 1
# }
Групповая политика предоставляет централизованное управление и настройку параметров операционной системы, приложений и пользователей. Политики доставляются клиентам через LDAP, где они представлены в виде объектов groupPolicyContainer. Эти объекты содержат атрибут gPCFileSysPath, который указывает на расположение информации о политике, хранящейся в общем каталоге SYSVOL домена.
Политики применяются с случайным интервалом от 90 до 120 секунд.
На Linux-клиенте, входящем в домен, политики можно принудительно применить с помощью команды:
samba-gpupdate --force
На Windows-клиенте для принудительного применения политик используется команда:
gpupdate /force
Для включения применения групповых политик на Linux-клиенте необходимо в разделе [global] файла /etc/samba/smb.conf
добавить следующую строку:
apply group policies = yes
Групповые политики для Windows-клиентах включаются автоматически.
Перед тем как настроить шаблоны групповых политик Samba необходимо выполнить установку шаблонов ADMX, предоставляемые Samba.
Эта команда скопирует шаблоны Samba ADMX в <domain>/Policies/PolicyDefinitions
каталог на общем ресурсе SYSVOL:
samba-tool gpo admxload -U Administrator
Если в домене используется более одного контроллера, следует выполнять команду с параметром -H, чтобы убедиться, что шаблоны ADMX устанавливаются на нужный контроллер домена, например:
samba-tool gpo admxload -H ldap://dc1.samdom.example.com -U Administrator
Если установлены шаблоны ADMX от Samba, необходимо также установить шаблоны ADMX от Microsoft, в противном случае управление доменными участниками на базе Windows будет недоступно.
Для установки шаблонов Microsoft ADMX следует загрузить последние актуальные административные шаблоны для используемой версии операционной системы (пример с ADMX для Windows 10 2022):
msiextract /path/to/microsoft/download/Administrative\ Templates\ \(.admx\)\ for\ Windows\ 10\ October\ 2022\ Update.msi
samba-tool gpo admxload -U Administrator --admx-dir=/path/to/extracted/msi/Program\ Files/Microsoft\ Group\ Policy/Windows\ 10\ October\ 2022\ Update\ \(22H2\)/PolicyDefinitions/
Команда
msiextract
входит в состав пакетаmsitools
. Для установки пакетаmsitools
следует выполнить команду:sudo pacman -Sy msitools
Для получения справки по командам используется опция
-h
в конце каждой команды, например:samba-tool gpo create -h
Для создания групповой политики из командной строки следует выполнить:
samba-tool gpo create <displayname> [options]
Для связи созданной групповой политики с контейнером следует выполнить команду :
samba-tool gpo setlink <container_dn> <gpo> [options]
Для управления созданными групповыми политиками используется команда:
samba-tool gpo manage <subcommand>
Для вывода списка существующих групповых политик следует выполнить команду:
samba-tool gpo listall -U Administrator
Примерный вывод:
GPO : {31B2F340-016D-11D2-945F-00C04FB984F9}
display name : Default Domain Policy
path : \\ubdc.ru\sysvol\ubdc.ru\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}
dn : CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=ubdc,DC=ru
version : 0
flags : NONE
GPO : {6AC1786C-016F-11D2-945F-00C04FB984F9}
display name : Default Domain Controllers Policy
path : \\ubdc.ru\sysvol\ubdc.ru\Policies\{6AC1786C-016F-11D2-945F-00C04FB984F9}
dn : CN={6AC1786C-016F-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=ubdc,DC=ru
version : 0
flags : NONE
Чтобы удалить политики, применённые к участнику домена на Linux, следует выполнить команду:
samba-gpupdate --unapply --target=Computer
Для удаления политики, применённой к пользователю:
samba-gpupdate --unapply --target=User -U <имя_пользователя>
Удаление применённых политик возможно только с правами суперпользователя (root).
Для удаления политики Windows-клиента следует отсоединиться от домена, а затем принудительно применить политику:
gpupdate /force /boot
Этот способ является единственным вариантом удаления политики для Windows-клиентов, так как сама система не поддерживает функцию её удаления.
Политики для Linux-клиентов, включённых в домен, применяются с помощью команды samba-gpupdate. Эти политики являются временными: при удалении объекта групповой политики с компьютера или пользователя соответствующие параметры конфигурации также автоматически удаляются с доменного участника.
Дополнительную информацию о настройке групповых политик в Linux можно найти в документации по Group Policy для Linux.