Сначала нужно сделать несколько подготовительных вещей.
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
Добавляем доменного пользователя в файлик /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
Теперь можно настроить автоматическое монтирование сетевых ресурсов, например папки с профилем пользователя.
Тут возникает небольшое затруднение. Монтировать ресурсы можно только от имени суперпользователя. Поэтому нельзя просто положить в 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 нужно отредактировать конфигурацию сервера 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 не принимает участия создании сессии и ресурсы монтируются.
Отсоединяемся от домена:
sudo /opt/pbis/bin/domainjoin-cli leave
Удаляем PBIS:
sudo /opt/pbis/bin/uninstall.sh uninstall