Введение
Когда я в первые установил пакет 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, в скрипте мне не удалось реализовать перезапуск Samba, после выполнения pkill -15 samba, скрипт заканчивает своё выполнение, если кто знает как правильно реализовать данный функционал, прошу написать в комментариях
#!/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/samba, сделайте его исполняемым и скопируйте его в каталоги rc3.d, rc0.d для автозапуска и остановки Samba
touche /usr/bin/samba
chmod +x /usr/bin/samba
cp /usr/bin/samba /etc/rc3.d/Ssamba
cp /usr/bin/samba /etc/rc0.d/Ksamba
Для дальнейшей корректной работы необходимо изменить dns сервер системы(файл resolve.conf не нужно изменять, изменения сохраняться только до перезагрузки), для этого отредактируем службу и обновим статус(в качестве сервера укажите ip адрес текущей системы)
svccfg -s dns/client setprop config/nameserver="192.168.1.105"
svcadm refresh dns/client
После данных манипуляций можно запустить Samba, а также добавить dns запись
/usr/bin/samba
/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, хоть это намного сложнее чем любой другой операционной системе.
Комментарии (16)
tankistua
05.02.2019 01:47Зачем целый диск?
zfs create -V 100G tank/ufs
fdisk /dev/tank/ufs
Дальше раздел, формат и маунт — должно работать.
skeletor
05.02.2019 11:091) Зачем собирать python-27, если он уже есть в пакетах? Я понимаю, если нужно как-то кастомно, но в статье дефолтные настройки сборки
2) Зачем использовать UFS? Какая выгода по сравнению с ZFS?batyrmastyr
05.02.2019 14:27В самом начале статьи же: «всё упирается в отсутствие в zfs Posix ACL, а также в python который используется в Solaris». Хотя что не так с питоном и мне непонятно.
skeletor
05.02.2019 14:36Когда я спрашивал, подразумевал, что именно не сложилось с ZFS ACL, почему именно нужно POSIX ACL? Хочется больше подробностей. И Кстати, в samba ZFS (NFS) ACL нормально так интегрируются www.samba.org/samba/docs/current/man-html/vfs_zfsacl.8.html. Тоже самое и про python (с какими трудностями столкнулся автор?).
Nemets85 Автор
06.02.2019 22:54Что конкретно с питоном и мне не понятно, по какой то причине samba-tool отказывается выполняться, а вот с собранным все ок.
Nemets85 Автор
06.02.2019 22:56Можно пример ./configure и smb.conf при которых samba заработает в роли ADDC на zfs?
a0fs
05.02.2019 22:34+1в скрипте мне не удалось реализовать перезапуск Samba, после выполнения pkill -15 samba, скрипт заканчивает своё выполнение, если кто знает как правильно реализовать данный функционал
Проще всего переименовать скрипт из samba в smbadm или что-то что не убивается по имени процесса =)))Nemets85 Автор
06.02.2019 21:57Действительно, мне что-то и в голову не пришла мысль о том, что скрипт завершает сам себя, спасибо за подсказку.
rezdm
Посмотрел на календарь — 2019-ый, хм.
Нет, я и сам любитель солярки, держал на домашнем мини-сервере, пока тот не навернулся (и зачем я в усб-порт ножницы сунул?) Может меня даже помнит тот человек, который в ээ… '97-ом-'99 году, часа в два ночи ответил в техподдержке МТУ (когда там халявный диалап был), и мы с ним настраивали ppp в солярке, и он мне сказал:
— Ну, бывает, кошечек заводят для удовольствия. Но солярис?
Короче, «зачем»? На ибее взять сейчас лицензионный виндоуз сервер стоит, по сравнению с железом и прочим — копейки.
DaemonGloom
Нет. Там можно взять win server, который успешно активируется. Лицензионным он от этого не станет. Не надо распространять такие мысли, пожалуйста. Разница в том, что для юридического пользования эта копия не будет годиться.
fishca
Разве юридическая чистота не зависит от наличия купленной бумажной лицензии?
DaemonGloom
Бумажная или нет — не столь критично, важно, чтобы компания смогла доказать, что эту лицензию она получила честно. А на таких сайтах обычно продаются ключи либо OEM, либо MAK(взятые из корпоративной подписки). Их лицензионность доказать не получится никак. Вообще — такие ключи раньше просто выкладывали на варезных порталах и никому не приходило в голову их покупать.
a0fs
Дабы вкусить сей продукт, пока его не похоронили в недрах Oracle-овских шкафов я полагаю…