Table of Contents

Настройка нужных сервисов

pkg install samba44
echo "ntpd_enable=YES" >> /etc/rc.conf

Добавляем запись о контроллере домена в /etc/ntp.conf.

service ntpd restart

Заполняем /etc/krb5.conf. Важно, чтобы default_realm был прописан большими буквами. Иначе будет kinit: Password incorrect:

[libdefaults]
    default_realm = TEST.LOCAL
    dns_lookup_realm = true
    dns_lookup_kdc = true
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = yes 

Заполняем /usr/local/etc/smb4.conf. Тут тоже важно, чтобы realm и workgroup были прописан большими буквами.:

[global]
    workgroup = TEST
    security = ads
    realm = TEST.LOCAL
    encrypt passwords = yes
    idmap config * : backend = tdb
    idmap config * : range = 100000-299999
    idmap config TEST : backend = rid
    idmap config TEST : range = 10000-99999
    winbind separator = +
    winbind enum users = yes
    winbind enum groups = yes
    winbind use default domain = yes
    winbind refresh tickets = yes
    template shell = /bin/tcsh
    template homedir = /home/%D_%U

Прописываем winbind в /etc/nsswitch.conf. Заменяем строки group: compat и passwd: compat на group: files winbind и passwd: files winbind соответственно.

sed -i -e 's/group: compat/group: files winbind/' /etc/nsswitch.conf
sed -i -e 's/passwd: compat/passwd: files winbind/' /etc/nsswitch.conf

Включаем и запускаем сервисы:

echo "samba_server_enable=YES" >> /etc/rc.conf
echo "winbindd_enable=YES" >> /etc/rc.conf
service samba_server restart

Введение в домен

Получаем тикет kerberos:

kinit domain_admin_login

Проверяем что тикет есть:

klist

Вводим систему в домен:

net ads join -U domain_admin_login

Проверка

Проверяем соединение с доменом:

net ads testjoin

Проверяем. Получаем список пользователей и груп домена:

wbinfo -u
wbinfo -g
getent passwd
getent group

Если команды wbinfo не выдает ничего, то это значит что не запущен winbindd или некорректно составлен /usr/local/etc/smb4.conf. Если команды getent показывают только локальных пользователей и группы, хотя wbinfo показывает доменных пользователей, то это значит что в /etc/nsswitch.conf не поправлены строки passwd: и group:.

Настройка PAM

Дальше нужно включить локальный вход для доменных пользователей. Для этого нужно отредактировать файлы в /etc/pam.d/. Для локального входа - /etc/pam.d/login, для входа по ssh - /etc/pam.d/sshd, для входа в kde - /usr/local/etc/pam.d/kde Чтобы при входе создавались хомдиры нужно установить:

pkg install pam_mkhomedir

Затем прописываем

session         required        /usr/local/lib/pam_mkhomedir.so  mode=0700

Несколько слов о template homedir в . Когда пользователи создаются с помощью adduser - домашние директории создаются в момент создания учетной записи, однако в случае входа доменого пользователя его домашней директории, скорее всего. не существует. Для автоматического создания директории нужно установить pam_mkhomedir и прописать нужных файлах в директории /etc/pam.d/ строку запуска pam_mkhomedir.so. Но тут есть нюанс. По умолчанию, template для homedir имеет значение /home/%D/%U, и модуль исправно выполняет mkdir /home/DOMAIN/USER, однако если директории /home/DOMAIN не существет, то папка /home/DOMAIN/USER не создастся. Поэтому нужно либо заменять /home/%D/%U на что-то другое - типа /home/%D_%U, либо создавать директорию /home/DOMAIN/ вручную.

Для того, чтобы пользователи могли локально логиниться в консоль редактируем /etc/pam.d/login. В нем в секцию auth первой строкой дописываем:

auth    sufficient      pam_winbind.so

А в секцию account первой строкой дописываем:

account sufficient      pam_winbind.so

/usr/local/etc/pam.d/kde

Права root

Первый варивант: Можно установить sudo

samba# cd /usr/ports/security/sudo
samba# make install clean

далее правим файл /usr/local/etc/sudoers добавив в него вот такую строку

user        ALL=(ALL)       NOPASSWD: ALL

Создаем группу в АД и включаем туда тех, кому нужно дать права рута на фри после чего правим файлик, где заменяем следующие строки

samba# ee/etc/pam.d/su # auth auth sufficient pam_rootok.so no_warn auth sufficient pam_self.so no_warn

#auth requisite pam_group.so no_warn group=wheel root_only fail_safe #заменяем группу wheel на группу с АД, юзерам которой разрешен вход под рутом auth requisite pam_group.so no_warn group=freeadmin root_only fail_safe