Введение в домен 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

Добавляем доменного пользователя в файлик /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 нужно отредактировать конфигурацию сервера 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
, 2018/03/19 06:46

Добрый день! Сделал всё по Вашей инструкции при попытке войти под доменным пользователем с обчного пользователя local_user@comp:~$ su domen_user Password: su: Сбой при проверке подлинности

С root_а заходит local_user@comp:~$ sudo -i root@comp:~# su domen_user Access denied Access denied domen_user@comp:/root$

Что и где можно поправить, что бы можно было заходить доменным пользователем при входе в сеанс?

Заранее спасибо!

, 2018/03/21 09:29

надо смотреть логи

Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/ubuntu-16-04-в-домене-active-directory-windows.txt
  • Last modified: 2019/07/22 10:17
  • by admin