Практическое применение восстановления Samba AD DC |
---|
Всю работу по резервированию и восстановлению будем проводить по ЭТОЙ СТАТЬЕ.
Подготовка
Контролер домена у нас будет единственным в нашей сети, иначе, статья не имеет смысла, потому-что при наличии дополнительного контролера домена и в случаи сбоя основного, с ним можно будет синхронизировать все данные.
Контролер домена устанавливался по статье - Контролер домена (на Samba4), за тем исключением, что исходный код samba брался не из git хранилища, а из последней версии (на момент написания статьи 4.0.9) и не большими изменениями в названиях:
Домен | TEST |
Realm | TEST.MY |
Контролер домена | DC-LINUX.TEST.MY |
IP контролера домена | 192.168.100.20 |
и созданных в домене пользователей, групп и компьютеров:
Организуем на DC-LINUX общий ресурс 4all. Для этого создадим каталог /etc/samba/4all, приведем smb.conf к следующему виду
# Global parameters [global] workgroup = TEST realm = TEST.MY netbios name = DC-LINUX server role = active directory domain controller server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate [netlogon] path = /var/lib/samba/sysvol/test.my/scripts read only = No [sysvol] path = /var/lib/samba/sysvol read only = No [4all] path = /etc/samba/4all comment = Share for all read only = no
и дадим права к каталогу 4all.
В этом каталоге создадим иерархию директорий с определенными правами доступа и несколько файлов для конкретных групп и(или) пользователей.
Вот так выглядят права на каталоги и файлы в Windows:
C:>\icacls \\dc-linux\4all\* /T \\dc-linux\4all\it TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) TEST\it:(OI)(CI)(F) \\dc-linux\4all\distr TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) TEST\it:(OI)(CI)(F) TEST\m_isk:(OI)(CI)(RX) \\dc-linux\4all\public TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) TEST\Domain Users:(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) \\dc-linux\4all\buh TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) TEST\buh:(OI)(CI)(F) \\dc-linux\4all\it\Pupkin Vasya.doc TEST\administrator:(I)(F) TEST\v_pupkin:(I)(F) TEST\Domain Users:(I)(RX) TEST\Domain Admins:(I)(F) TEST\it:(I)(F) \\dc-linux\4all\public\my.txt TEST\administrator:(I)(F) BUILTIN\:(I)(F) TEST\Domain Users:(I)(RX) TEST\Domain Admins:(I)(F) \\dc-linux\4all\buh\V.Primudraya TEST\administrator:(I)(F) TEST\v_prim:(I)(F) TEST\Domain Users:(I)(RX) TEST\Domain Admins:(I)(F) TEST\buh:(I)(F)
- F - полный доступ
- M - доступ на изменение
- RX - доступ на чтение и выполнение
- R - доступ только на чтение
- W - доступ только на запись
в скобках список определенных прав:
- D - удаление
- RC - чтение
- WDAC - запись DAC
- WO - смена владельца
- S - синхронизация
- AS - доступ к безопасности системы
- MA - максимально возможный
- GR - общее чтение
- GW - общая запись
- GE - общее выполнение
- GA - все общие
- RD - чтение данных, перечисление содержимого папки
- WD - запись данных, создание файлов
- AD - добавление данных, создание папок
- REA - чтение дополнительных атрибутов
- WEA - запись дополнительных атрибутов
- X - выполнение файлов и обзор папок
- DC - удаление вложенных объектов
- RA - чтение атрибутов
- WA - запись атрибутов
права наследования могут предшествовать любой форме и применяются только к папкам:
- (OI) - наследуют объекты
- (CI) - наследуют контейнеры
- (IO) - только наследование
- (NP) - не распространять наследование
И так, DNS у нас работает, с правами мы определились, пользователи и компьютеры работают в домене.
Теперь создадим резервную копию, сымитируем «падение» samba, восстановим её из резервной копии и проверим работоспособность.
Резервируем
По статье нам советуют использовать скрип sabma_backup, который идет вместе с исходным кодом. Но, так как samba в Slackware устанавливается не в одно место, а в разные и при сборке, в опциях configure я указывал эти пути, то мне пришлось немного изменить данный скрипт.
скрипт samba_backup для Slackware
Скрипт samba_backup для Slackware, и согласно скрипта у нас получается следующее:
FROMWHERE="/etc/samba/private /etc/samba/smb.conf /var/lib/samba/sysvol" WHERE=/etc/samba/backups DAYS=90
Создадим директорию назначения, которую мы прописали в переменной $WHERE, и установим разрешения:
# mkdir /etc/samba/backups # chmod 750 /etc/samba/backups
Копируем скрипт куда-нибудь в /usr/sbin, даем права на запуск и запускаем.
# cp ./samba_backup /usr/sbin # chown root:root /usr/sbin/samba_backup # chmod 750 /usr/sbin/samba_backup # samba_backup
Если ошибок нет, то в каталоге /etc/samba/backups мы найдём 3 файла:
- samba4_private.дата_создания_архива.tar.bz2
- smb.conf.дата_создания_архива.tar.bz2
- sysvol.дата_создания_архива.tar.bz2
Восстанавливаем
Повторю все предупреждения:
- Никогда не восстанавливайте из резервной копии DC, если хотя бы один другой DC все еще работает!
- Никогда не делайте восстановление и изменение версии samba одновременно!
- Всегда восстанавливайте в системе, которая использует ту же версию Samba, что была во время создания резервной копии!
- Восстанавливайте в системе с тем же IP-адресом и именем хоста.
- Рекомендуем: Восстанавливать в той же ОС, в которой была создана резервная копия.
От себя добавлю. Если у вас случился сбой повлекший переустановку системы, то сначала установите Slackware со всеми обновлениями и той же версии, что были при последнем резервном копировании samba, т.е. сделайте систему идентичной той, что была до сбоя. Потом установите samba той же версии, что была до сбоя и только потом восстанавливайте её из резервной копии.
А мы просто сымитируем сбой samba представив, что наши пользователи потеряли доступ к общему ресурсу и (или) вообще не могут войти в домен.
Для восстановления из резервной копии обязательно останавливаем samba
# /etc/rc.d/rc.samba_ad stop Shutting down samba4: [ OK ]
Удаляем каталоги, которые будем восстанавливать:
# rm /etc/samba/smb.conf # rm -rf /etc/samba/private # rm -rf /var/lib/samba/sysvol
И распакуем резервные копии
# tar -jxf smb.conf.дата_создания_архива.tar.bz2 -C / # tar -jxf samba4_private.дата_создания_архива.tar.bz2 -C / # tar -jxf sysvol.дата_создания_архива.tar.bz2 -C /
Переименуем файлы *.ldb.bak в каталоге private в *.ldb
# find /etc/samba/private/ -type f -name '*.ldb.bak' -print0 | while read -d $'\0' f ; do mv "$f" "${f%.bak}" ; done
и на всякий случай подправим DNS
# samba_upgradedns --dns-backend=BIND9_DLZ Reading domain information DNS accounts already exist No zone file /etc/samba/private/dns/TEST.MY.zone DNS records will be automatically created DNS partitions already exist dns-dc-linux account already exists See /etc/samba/private/named.conf for an example configuration include file for BIND and /etc/samba/private/named.txt for further documentation required for secure DNS updates Finished upgrading DNS
Проверяем
Для проверки запускаем samba
# /etc/rc.d/rc.samba_ad start Starting samba4: [ OK ]
запустилась, проверим DNS
# nslookup win-w7 Server: 192.168.100.20 Address: 192.168.100.20#53 Name: win-w7.test.my Address: 192.168.100.60 # nslookup win-server Server: 192.168.100.20 Address: 192.168.100.20#53 Name: win-server.test.my Address: 192.168.100.10 # nslookup dc-linux Server: 192.168.100.20 Address: 192.168.100.20#53 Name: dc-linux.test.my Address: 192.168.100.20
DNS работает, проверим разрешения на папки и файлы
C:\> icacls \\dc-linux\4all\* /T \\dc-linux\4all\it TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) TEST\it:(OI)(CI)(F) \\dc-linux\4all\distr TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) TEST\it:(OI)(CI)(F) TEST\m_isk:(OI)(CI)(RX) \\dc-linux\4all\public TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) TEST\Domain Users:(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) \\dc-linux\4all\buh TEST\administrator:(OI)(CI)(F) BUILTIN\:(F) :(OI)(CI)(IO)(F) :(OI)(CI)(IO)(RX) TEST\Domain Admins:(OI)(CI)(F) TEST\buh:(OI)(CI)(F) \\dc-linux\4all\it\Pupkin Vasya.doc TEST\administrator:(I)(F) TEST\v_pupkin:(I)(F) TEST\Domain Users:(I)(RX) TEST\Domain Admins:(I)(F) TEST\it:(I)(F) \\dc-linux\4all\public\my.txt TEST\administrator:(I)(F) BUILTIN\:(I)(F) TEST\Domain Users:(I)(RX) TEST\Domain Admins:(I)(F) \\dc-linux\4all\buh\V.Primudraya TEST\administrator:(I)(F) TEST\v_prim:(I)(F) TEST\Domain Users:(I)(RX) TEST\Domain Admins:(I)(F) TEST\buh:(I)(F)
Если сравним с теми, что были до сбоя, то увидим полную идентичность! И если войдем в домен каким-либо пользователем домена, то и там с правами будет все так же как и до сбоя.