Active Directory (AD) — службы каталогов корпорации Microsoft для операционных систем семейства Windows Server. На данный момент это самый популярный инструмент организации доменной структуры в компаниях и организациях.
Данная статья не будет заострять внимание на особенностях разворачивания и настройки Active Directory, предполагается, что домен у вас уже настроен.
Для того, чтобы иметь возможность предоставлять права доменным пользователям на управление ПК с операционной системой Uncom OS, вам необходимо скачать с сайта sudo.ws последнюю версию пакета sudo, распаковать архив, в папке /docs найти файл schema.ActiveDirectory и переместить его на ваш сервер.
Схема импортируется в AD с помощью Powershell (запустить от имени администратора из каталога, в котором лежит файл схемы), командой
ldifde -i -f schema.ActiveDirectory -c dc=X dc=unc,dc=tst
Не забудьте заменить имя домена на своё.
После этого вам необходимо в корне домена создать подразделение sudoers. По умолчанию именно в этом подразделении демон sssd производит поиск sudoRole объектов.

Далее, открываем adsiedit.msc и подключаемся к контексту по умолчанию:

В подразделении sudoers создаем объект, принадлежащий классу sudoRole:


Имя может быть выбрано произвольно, так как служит только для удобной идентификации
Из атрибутов объектов типа sudoRole нас интересуют следующие:



Windows Server 2022 с ролями:
В качестве DHCP-сервера выступает сетевой шлюз (роутер).
Убедиться, что на Windows Server развернуты роли Active Directory и DNS Сервер. Для Active Directory должны быть соответствующие имена: лес/домен — ad.uncom.tech, NetBios Name — AD.
В Uncom OS убедиться, что адрес dns соответствует ip-адресу Windows Server. Сделать это можно в графической настройке сетевого адаптера. При необходимости перенастроить DNS через графический интерфейс Network Manager:

Проверить можно с помощью команды: resolvectl status:

Установить доменное имя клиентского компьютера и перезапустить ПК:
sudo hostnamectl set-hostname uncom0.ad.uncom.tech
sudo reboot

4. Обновить репозитории и установить необходимые пакеты. В процессе установки krb5-user запросить Realm:
sudo apt update && sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin libnss-sss libpam-sss oddjob oddjob-mkhomedir krb5-user packagekit
В процессе установки могут быть запрошены адреса Kerberos. Достаточно ввести только Realm: AD.UNCOM.TECH

5. Проверка доступности домена. Результатом выполнения команды будут отображены основные параметры домена:
sudo realm discover AD.UNCOM.TECH

6. Ввод в домен:
sudo realm join AD.UNCOM.TECH -U admin
В процессе ввода будет запрошен пароль администратора домена:

И пароль локальной учетной записи с правами sudo:

7. Проверка успешного ввода в домен:
realm list

8. Обновление политики создание домашних каталогов и включение sssd сервиса:
sudo pam-auth-update --enable mkhomedir
sudo systemctl restart sssd
sudo systemctl enable sssd

9. После успешного подключения, можно инициализировать и проверить подключение к пользователю (при условии, что пользователь домена test создан):
sudo kinit test@AD.UNCOM.TECH
sudo klist
sudo getent passwd test@ad.uncom.tech
Обратите внимание, что Realm в Kerberos всегда печатается исключительно прописными буквами





Windows Server 2019 с ролями:
В качестве DHCP-сервера выступает сетевой шлюз (роутер).
ВАЖНО! Настоятельно не рекомендуется использовать в наименовании домена суффикс
.local. Он зарезервирован для Multicast-DNS и его сервисов, таких, как zeroconf, avahi и Bonjour. В случае, если имя вашего домена имеет суффикс.local, вам придётся отключить использование mDNS через редактирование файла конфигурации/etc/nsswitch.conf
Установите необходимые пакеты с помощью команды
sudo apt -y install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit libsss-sudo
Проверим, что наш хост может обнаружить домен AD с помощью команды
sudo realm discover -v unc.tst

Упомянутые в требованиях пакеты мы установили на предыдущем шаге, все требования выполнены, можно присоединять хост к домену.
Если вы хотите сменить имя хоста перед присоединением к домену, это можно сделать с помощью команды
sudo hostnamectl set-hostname "имя-хоста"
Для присоединения нашего ПК к домену воспользуемся командой:
sudo realm join -U "имя_пользователя_с_правами_на присоединение_к_домену" "имя_домена"
Если вы хотите увидеть детали процесса присоединения, добавьте опцию -v или --verbose
Система запросит пароль учётной записи с правми на присоединение к домену. После успешного присоединения вы увидите следующий текст:

Проверим, что наш хост действительно присоединен к домену командой
sudo realm list

В каталоге Active Directory также появилась запись с введённым в домен хостом:

Для того, чтобы Uncom OS могла использовать настройки прав пользователей, произведённых в Active Directory, необходимо внести правки в файлы конфигурации службы sssd:
/etc/nsswitch.conf добавляем в конец файла строку:
/etc/sssd/sssd.conf в секции [sssd] в сервисы добавляем sudo
Вход под доменными учетными записями осуществляется в формате имени пользователя UPN (имя@доменное.имя). Для входа под домённой учетной записью нужно нажать на "Нет в списке?"

Проверим вход под двумя пользователями, один из них состоит в группе безопасности sudo_root, второй нет.
Начнём с учётной записи суперпользователя:



Теперь проверим учётную запись с ограниченными правами:



Для отсоединения ПК под управлением Uncom OS от домена, необходимо зайти под учётной записью локального суперпользователя и воспользоваться командой
sudo realm leave -v "имя_домена"

Проверим список доменов, в которых состоит наш ПК:

Вывод команды sudo realm list является пустым, ПК успешно отсоединён от домена.
При этом домашние папки доменных пользователей остались доступными для локальных суперпользователей:
