Samba DC — репликация SYSVOL (rsync и robocopy)
Samba DC реплицирует каталог AD, но не реплицирует SYSVOL (групповые политики и скрипты входа). Без синхронизации SYSVOL политики на разных DC разойдутся. Статья описывает оба рабочих способа синхронизации.
Принцип
Назначается один «главный» DC (обычно держатель PDC-эмулятора) — все правки GPO делаются только на нём. Остальные DC получают копию SYSVOL по расписанию: односторонняя синхронизация «главный → остальные».
Способ 1. rsync (Samba DC ↔ Samba DC)
На главном DC поднимаем rsync-демон, отдающий SYSVOL только на чтение. /etc/rsyncd.conf:
[SysVol]
path = /var/lib/samba/sysvol
comment = Samba SYSVOL
read only = yes
Запускаем: systemctl enable --now rsync.
На втором DC — задание в cron (каждые 5 минут):
*/5 * * * * rsync -XAavz --delete-after rsync://dc1.ad.example.com/SysVol/ /var/lib/samba/sysvol/ > /var/log/sysvol-sync.log 2>&1
Ключи важны: -X и -A переносят расширенные атрибуты и ACL (права на GPO), --delete-after удаляет то, что удалено на главном.
После первой синхронизации на принимающем DC сбрасываем права:
samba-tool ntacl sysvolreset
ID-маппинг у DC различается, поэтому после синхронизации периодически проверяйте права:
samba-tool ntacl sysvolcheck. При ошибках — повторныйsysvolreset.
Способ 2. robocopy (Windows DC → Samba DC)
Когда главный DC — Windows (наш случай в статье про дополнительный DC на Samba), на Samba DC поднимается SMB-доступ к sysvol, а на Windows DC создаётся задание планировщика:
robocopy \\WIN-DC\SYSVOL\ad.example.com \\SRV-DC02\sysvol\ad.example.com /MIR /SEC /XD DfsrPrivate /R:2 /W:5
/MIR— зеркалирование (включая удаления);/SEC— копирование NTFS-прав;/XD DfsrPrivate— исключаем служебный каталог DFSR.
Задание запускаем по расписанию (каждые 5–15 минут) от учётной записи с правами на оба ресурса. После первого прогона на Samba DC — samba-tool ntacl sysvolreset.
Проверка
- Создать тестовую GPO на главном DC.
- Дождаться синхронизации, проверить появление каталога политики в
/var/lib/samba/sysvol/<домен>/Policies/на втором DC. samba-tool ntacl sysvolcheck— без ошибок.