Введение
Когда я в первые установил пакет 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, хоть это намного сложнее чем любой другой операционной системе.