Table of Contents

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

Сначала нужно сделать несколько подготовительных вещей.
1. Убедиться что имя локального пользователя Ubuntu не совпадает с именем доменного админа.
2. Прописать DNS и DNS-суффикс в настройках сетевого соединения. В новых версиях Ubuntu эти параметры задаются для сетевых интерфейсов и прописываются в /etc/network/interfaces.

# The primary network interface
auto eth0
iface eth0 inet static
address _IP_ADDRESS_
netmask _NETMASK_
gateway _GW_IP_ADDRESS_
dns-nameservers IP_DNS1_ _IP_DNS2_
dns-domain domain.name
dns-search domain.name

Теперь можно установить необходимое ПО и ввести Ubuntu в домен.
Я использовал Power Broker Identity Services Open Edition - https://github.com/BeyondTrust/pbis-open/releases.
Этот пакет - коммерческий аналог likewise-open. Я ставлю бесплатную версию, которая несколько менее функциональна, чем платная - частности она не поддерживает GPO.

Скачал и установил:

wget https://github.com/BeyondTrust/pbis-open/releases/download/8.5.2/pbis-open-8.5.2.265.linux.x86.deb.sh
chmod a+x pbis-open-8.5.2.265.linux.x86.deb.sh
sudo ./pbis-open-8.5.2.265.linux.x86.deb.sh

При установке на вопрос о “legacy links” я ответил No.

После установки сразу можно вводить машину в домен AD:

sudo /opt/pbis/bin/domainjoin-cli join --disable ssh  domainName ADjoinAccount

Тут domainName - имя домена (должно нормально резолвиться), а ADjoinAccount - имя доменной учетной записи, имеющей права на ввод машины в домен.

Теперь нужно немного отредактировать файлик /etc/pam.d/common-session. Там находим строчку session sufficient pam_lsass.so или session optional pam_lsass.so, комментируем ее и в самый конец файла дописываем:

session [success=ok default=ignore] pam_lsass.so

В конец файла эту строку нужно помещать для того, чтобы нормально отрабатывали опциональные модули, а без success=ok default=ignore пользователя будет пускать в систему, но KDE можно будет запустить только после логина вручную.

в /etc/pam.d/common-auth в самое начало вставляем (в Ubuntu 16.04 Server + PBIS 8.5.2.265 это уже сделано):

auth    [success=2 default=ignore]      pam_lsass.so

в /etc/pam.d/common-account в самое начало вставляем (в Ubuntu 16.04 Server + PBIS 8.5.2.265 это уже сделано):

account [success=ok new_authtok_reqd=ok default=ignore]         pam_lsass.so unknown_ok
account [success=2 new_authtok_reqd=done default=ignore]        pam_lsass.so

в /etc/pam.d/common-password в самое начало вставляем (в Ubuntu 16.04 Server + PBIS 8.5.2.265 это уже сделано):

password        [success=2 default=ignore]      pam_lsass.so

в /etc/pam.d/common-session-noninteractive в конце должно быть так (в Ubuntu 16.04 Server + PBIS 8.5.2.265 это уже сделано):

# and here are more per-package modules (the "Additional" block)
session optional        pam_lsass.so 
session required        pam_unix.so
# end of pam-auth-update config

Настройка экрана входа

Дефолтная тема KDE breeze не позволяет ввести имя пользователя вручную. Поэтому необходимо установить одну из тем, которые дают такую возможность.
Список доступных тем можно получить так:

apt-cache search sddm-theme

Устанавливаем темы:

sudo apt-get install sddm-theme-circles sddm-theme-elarun sddm-theme-lubuntu-chooser sddm-theme-maldives sddm-theme-maui

Дальше идем в меню KDE → Applications → Settings → System Settings → Startup and Shutdown → Login Screen (SDDM) и выбираем одну из тем. Я выбрал Circles

Некоторые дополнительные настройки

Список настраиваемых параметров PBIS можно получить командой:

/opt/pbis/bin/config --list

Меняем дефолтную оболочку на православный bash:

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

Включаем автоматичекое дополнение имени домена:

sudo /opt/pbis/bin/config AssumeDefaultDomain true

Даем права в sudo

Добавляем доменного пользователя в файлик /etc/sudoers, для того, чтобы работал sudo.
Открываем /etc/sudoers и добавляем туда:

username     ALL=(ALL:ALL) ALL 

Если не используем опцию AssumeDefaultDomain true, то имя указываем в формате DOMAIN_NAME\\username. Тут нужно обратить внимание на двойной слеш в качестве разделителя \\. Без него не работает.

Например, для добавления доменных админов нужно добавить строку:

%DOMAIN\\domain^admins     ALL=(ALL:ALL) ALL

Обращаем внимание на двойной слеш \\ и на ^ вместо пробела.
При добавлении групп важно знать включено ли автоматичекое дополнение имени домена (параметр AssumeDefaultDomain). Если включено, то указывать домен не надо:

%domain^admins     ALL=(ALL:ALL) ALL

Если его указать, то работать не будет.
В любом случае - группы в которые входит пользователь (в том числе доменый) можно посмотреть командой:

groups

Автоматическое монтирование ресурсов - pam.mount

Теперь можно настроить автоматическое монтирование сетевых ресурсов, например папки с профилем пользователя.
Тут возникает небольшое затруднение. Монтировать ресурсы можно только от имени суперпользователя. Поэтому нельзя просто положить в rc.local строку вида mount -t cifs //server /mountpoint.
К счастью есть PAM-модуль pam_mount, который позволяет монтировать ресурсы с повышенными привилегиями на этапе входа пользователя в систему.

Устанавливаем модуль:

sudo apt-get install libpam-mount

Оказалось, что с установками по-умолчанию модуль pam_mount.so не монтирует ресурсы. Для того, чтобы модуль работал корректно, нужно отредактировать файл /etc/pam.d/common-session.
По-умолчанию, модуль pam_mount.so имеет флаг optional и располагается в файле /etc/pam.d/common-session после модуля pam_lsass.so, который имеет флаг sufficient. Таким образом модуль опциональный модуль pam_mount.so игнорируется, при корректном прохождении достаточного для аутентификации модуля pam_lsass.so. Чтобы монтирование работало корректно нужно поставить строчку session optional pam_mount.so перед строкой с pam_lsass.so

Дальше конфигурируем pam_mount. При входе пользователя обрабатываются два файла - глобальный /etc/security/pam_mount.conf.xml и файл ~/.pam_mount.conf.xml с ресурсами, монтируемыми индивидуально каждому пользователю.
Этот файл довольно неплохо откомментирован, поэтому подробно описывать не имеет смысла и реально нужно редактировать единственную строку:

<volume fstype="cifs" server="servername" path="shared" mountpoint="~/shared" options="nodev,nosuid"/>

Соотвественно отредактировать параметры server, path и mountpoint.
При этом, path не должне начинаться с “/”, а сразу указывать на папку, но при этом может указывать на вложенную папку. То есть если в Windows адрес файла: \\server\shared\directory1\file.txt, то для того чтобы он был виден в смонтированной папке - path должен быть path=“shared\directory1”.

Pam_mount и сессия SSH

Для того, чтобы pam_mount корректно работал в сессии SSH нужно отредактировать конфигурацию сервера SSH - файл /etc/ssh/sshd_config.
Параметру ChallengeResponseAuthentication дать значение no.

Без этой правки, из-за особенностей работы OpenSSH при подключении по SSH ресурсы не монтируются с помощью pam_mount с ошибкой:

conv->conv(...): Conversation error

Некоторые подробности тут:
http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640
https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35
https://bugzilla.mindrot.org/show_bug.cgi?id=688

Также, это неприятное обстоятельство можно обойти выполнив в сессии SSH команду:

su -l $USER

То есть фактически залогинившись в сессии SSH еще раз с именем текущего пользователя.
В этому случае OpenSSH не принимает участия создании сессии и ресурсы монтируются.

Удаление PBIS - PowerBroker Identity Services Open

Отсоединяемся от домена:

sudo /opt/pbis/bin/domainjoin-cli leave

Удаляем PBIS:

sudo /opt/pbis/bin/uninstall.sh uninstall