Введение
Когда я в первые установил пакет Samba в Solaris, выяснилось, что роли ADDC в данном пакете нету. Долгие поиски в интернете привели меня к ответам такого рода — пакет Samba в Solaris эту роль не поддерживает, а на некоторых писали о том, что данную роль вообще невозможно реализовать в Solaris. Дальнейшее исследование привели меня к тому, что всё упирается в отсутствие в zfs Posix ACL, а также в python который используется в Solaris. Для решения данных проблем необходимо использовать жёсткий диск с файловой системой ufs, а также собрать из исходного кода python(а также Samba).
Подготовка
Все действия я произвожу в VMware ESXI, перед установкой системы добавьте в виртуальную машину ещё один жёсткий диск. Далее необходимо скачать исходный код Python и Samba(в корень файловой системы).
wget https://download.samba.org/pub/samba/stable/samba-4.8.8.tar.gz wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
Распакуем архивы и переименуем папки для большего удобства
gzip -d samba-4.8.8.tar.gz gzip -d Python-2.7.15.tgz tar -xvf Python-2.7.15.tar tar -xvf samba-4.8.8.tar mv Python-2.7.15 python mv samba-4.8.8 samba
Далее необходимо установить gcc и некоторые зависимости
pkg install gcc pkg install pkgconfig pkg install automake pkg install autoconf
Установим переменные для сборки x64 версий
export CPP="/usr/gcc/7/bin/gcc -E" export CC="/usr/gcc/7/bin/gcc" export CFLAGS="-m64 -std=gnu99 -fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" export LDFLAGS="-m64 -L/usr/lib -R/usr/lib" export CXXFLAGS="-m64"
Создадим файловую систему ufs на дополнительном жёстком диске(укажите имя которое используется у Вас)
newfs /dev/dsk/c1t1d0s2
Далее необходимо прописать данный жёсткий диск в файл vfstab(не опечатка, в Solaris этот файл называется именно так). Добавьте в данный файл такую строку.
/dev/dsk/c1t1d0s2 /dev/dsk/c1t1d0s2 /ADDC ufs fsck yes -
Создайте каталог для монтирования и смонтируйте в него жёсткий диск
mkdir /ADDC mount /dev/dsk/c1t1d0s2 /ADDC
Сборка и установка
Можно приступать к сборке Samba и Python. Перейдите в каталог с распакованным исходным кодом Solaris и выполните сборку. Сборка Samba занимает довольно длительное время.
cd /samba ./configure --prefix=/ADDC gmake gmake install
Для сборки python дополнительных параметров указывать не нужно, установка будет произведена в каталог /usr/local
cd /python ./configure gmake gmake install
После сборки python необходимо добавить путь до только, что собранного python в переменную path
export PATH="/usr/local/bin:/usr/sbin:/usr/bin"
ВАЖНО: Для того что-бы всё корректно сработало, необходимо указать переменную PATH как указано в данном примере, путь /usr/local/bin должен быть на первом месте.
После данных действий использовать Samba в роли ADDC не составит проблем, для этого необходимо выполнить скрипт samba-tool
/ADDC/bin/samba-tool domain provision --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=office.virusslayer.su --domain=virusslayer --host-name=ad --host-ip=192.168.1.105 --function-level=2008_R2 --adminpass=Password123456
Укажите realm, domain, host-name которые необходимы Вам, в также host-ip который используется у данного хоста.
Следующем шагом будет настройка kerberos, для этого необходимо изменить следующие файлы
/etc/krb5/krb5.conf /etc/krb5/kdc.conf
Файл krb5.conf необходимо привести к виду
[libdefaults] default_realm = OFFICE.VIRUSSLAYER.SU dns_lookup_realm = false dns_lookup_kdc = true default_tgs_enctypes = aes256-cts-hmac-sha1-96 default_tkt_enctypes = aes256-cts-hmac-sha1-96 permitted_enctypes = aes256-cts-hmac-sha1-96 [realms] OFFICE.VIRUSSLAYER.SU = { kdc = kdc.office.virusslayer.su admin_server = kdc.office.virusslayer.su }
kdc.conf
[realms] OFFICE.VIRUSSLAYER.SU = { profile = /etc/krb5/krb5.conf acl_file = /etc/krb5/kadm5.acl kadmind_port = 749 max_life = 8h 0m 0s max_renewable_life = 7d 0h 0m 0s default_principal_flags = +preauth }
Для автозапуска и остановки мне пришлось написать простой скрипт на bash
#!/usr/bin/bash case $1 in start|-start) /ADDC/sbin/samba /ADDC/sbin/smbd /ADDC/sbin/nmbd ;; stop|-stop) rm /ADDC/var/run/*.pid pkill -15 samba pkill -15 smbd pkill -15 nmbd ;; v|-v) /ADDC/sbin/samba -V ;; config|-config) cat /ADDC/etc/smb.conf ;; restart|-restart) rm /ADDC/var/run/*.pid pkill -15 samba pkill -15 smbd pkill -15 nmbd /ADDC/sbin/samba /ADDC/sbin/smbd /ADDC/sbin/nmbd ;; esac
Данный скрипт поместите в файл(предварительно его создав) /usr/bin/sambactl, сделайте его исполняемым и скопируйте его в каталоги rc3.d, rc0.d для автозапуска и остановки Samba
touche /usr/bin/sambactl chmod +x /usr/bin/sambactl cp /usr/bin/sambactl /etc/rc3.d/Ssambactl cp /usr/bin/sambactl /etc/rc0.d/Ksambactl
Для дальнейшей корректной работы необходимо изменить dns сервер системы(файл resolve.conf не нужно изменять, изменения сохраняться только до перезагрузки), для этого отредактируем службу и обновим статус(в качестве сервера укажите ip адрес текущей системы)
svccfg -s dns/client setprop config/nameserver="192.168.1.105" svcadm refresh dns/client
После данных манипуляций можно запустить Samba, а также добавить dns запись
/usr/bin/sambactl /ADDC/bin/samba-tool dns add office.virusslayer.su -U administrator office.virusslayer.su kdc.office.virusslayer.su A 192.168.1.105
Проверим работу kerberos
kinit administrator
Если всё корректно и пароль введён правильно, билет будет создан в каталоге /tmp/volatile-user/0
На этом настройка kerberos не закончена, также необходимо настроить сервер синхронизации времени, для этого создайте файл /etc/inet/ntp.conf, запустите службу времени и внесите в данный файл необходимые изменения
server 127.127.1.0 prefer server 0.europe.pool.ntp.org server 1.europe.pool.ntp.org server 2.europe.pool.ntp.org server 3.europe.pool.ntp.org driftfile /var/ntp/ntp.drift restrict 192.168.1.0 255.255.255.0 nomodify notrap
В строке restrict укажите подсеть которой будет разрешен доступ к серверу времени
Запустите и обновите службу
svcadm enable ntp svcadm refresh ntp
Для редактирования групповых политик можно использовать средства удалённого администрирования(RSAT), данные средства можно скачать от сюда
Windows 8.1 https://www.microsoft.com/ru-ru/download/details.aspx?id=39296 Windows 10 https://www.microsoft.com/ru-RU/download/details.aspx?id=45520 Windows 7 https://www.microsoft.com/ru-ru/download/details.aspx?id=7887
После установки RSAT в Windows 7, данные средства необходимо включить в панели управления(Включение и отключение компонентов Windows). После того как компьютер будет введён в домен, запустите редактор групповых политик, в Default Domain Policy отредактируйте политику отвечающею за сервер времени

В данном разделе необходимо включить параметр «Включить NTP-клиент Windows», «Настроить NTP-клиент Windows», тип выставить NTP, NtpServer указать office.virusslayer.su
Дополнительно можно настроить firewall, отредактируйте файл /etc/firewall/pf.conf(приведя его к следующему виду).
set skip on lo0 pass quick on lo0 from any to any no state pass in quick on net0 proto {tcp,udp} from any to any port {22,53,123,135,137,464,389,515,636,631,445,139,88,3268,3269,49152:65535} flags S/SA modulate state pass out quick on net0 proto tcp from any to any port {80,443,21,20,53} flags S/SA modulate state pass out quick on net0 proto udp from any to any port=53 keep state pass out quick on net0 proto icmp from any to any block from any to any fragment block from any to any block all
Запустите службу и укажите файл с правилами
svcadm enable firewall pfctl -f /etc/firewall/pf.conf
Заключение
Как видно из данной публикации в Solaris возможно использовать Samba в роли ADDC, хоть это намного сложнее чем любой другой операционной системе.