Шаги ==== 1. Установить пакеты: # apt-get install -y \ libkrb5-devel libsasl2-devel samba-devel \ libsasl2-plugin-gssapi libgkdi \ cmake gcc gcc-c++ samba-common-libs samba-pidl binutils patchelf Примечание: libgkdi-devel не используется. В процессе сборки используются header-файлы из репозитория. Однако полученный исполняемый файл будет переключён на использование библиотеки из системы с помощью patchelf далее. 2. Склонировать репозиторий libgkdi: $ git clone git://git.altlinux.org/gears/l/libgkdi.git --depth 1 libgkdi 3. Собрать пример и сделать так, чтобы он использовал библиотеку gkdi из системы, а не собранную: $ cd libgkdi && \ cmake . && \ make && \ cd examples/cpp_example && \ patchelf --set-rpath "/usr/lib64" "gkdi_example" && \ readelf -d "gkdi_example" | grep -E 'RPATH|RUNPATH' && \ ldd "gkdi_example" | grep -E 'gkdi' 4. Настроить сервер Samba AD и ввести клиента в домен. 5. Запустить пример на клиенте: $ ./gkdi_example <samba dc ip> samba.testdomain testuser Фактический результат ===================== > Failed to create gss auth identity! > Couldnt obtain RPC server binding. exiting. Ожидаемый результат =================== Успешное завершение работы команды, ошибок нет. Дополнительно ============= Возможно, необходимо запускать с другими параметрами. Пробовал с введением в домен и без него. Пробовал с указанием hostname текущей машины или dc, пользователем administrator. Пробовал запускать после $ kinit <username> или из графического сеанса доменного пользователя на клиенте. Воспроизводимость ================= Воспроизводится на виртуальной машине: [sisyphus] ALT Server 11.0 beta 20250213 x86_64 libgkdi-0.0.2-alt1.x86_64 > $ git rev-parse HEAD > 6af90afd2d44b2d4a5f0f91d3d8b420a1a8d1aaa
Created attachment 18273 [details] Пример работает как и задумано
Пример работает если использовать не <samba dc ip>, а <samba dc hostname>. Он не предназначен для работы с ip адресами, иначе бы в его исходном коде было указано [host|ip]. Пример запуска ./gkdi_example dc.domain.alt DOMAIN.ALT username
Добавил скриншот с примером запуска и успешного исполнения.
По-прежнему не удаётся запустить пример, однако теперь другая ошибка: $ ./gkdi_example dc.samba.testdomain SAMBA.TESTDOMAIN Administrator Failed to establish RPC connection: 3221226047 Couldnt obtain RPC server binding. exiting. Шаги воспроизведения указаны в первом сообщении. =========================================== При этом с клиента: --- dc.samba.testdomain ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2038ms =========================================== $ smbclient -L dc.samba.testdomain -U Administrator Password for [SAMBA\Administrator]: Sharename Type Comment --------- ---- ------- media Disk media sysvol Disk netlogon Disk SHARE Disk Share directory for AD users IPC$ IPC IPC Service (Samba 4.21.7-alt2) =========================================== $ klist Ticket cache: KEYRING:persistent:1000:1000 Default principal: Administrator@SAMBA.TESTDOMAIN Valid starting Expires Service principal 24.07.2025 10:14:55 24.07.2025 20:14:55 krbtgt/SAMBA.TESTDOMAIN@SAMBA.TESTDOMAIN renew until 31.07.2025 10:14:47 =========================================== Возможно для работы примера нужны какие-то дополнительные/особые настройки контроллера/клиента?
Здравствуйте. Насколько я вижу вы тестируете библиотеку относительно сервера Samba-4.21.7-alt2. В этой версии samba нет сервиса GKDI - программного интерфейса который использует библиотека. Поэтому необходимо использовать Windows Server 2022 для тестирования, предварительно включив сервис GKDI. Вот что про это написано у Microsoft: - На вашем устройстве должна быть установлена роль Доменных служб Active Directory (AD DS). Дополнительные сведения см. в статье "Добавление и удаление ролей и компонентов" в Windows Server. - Вы должны быть членом группы "Администраторы домена " или " Администраторы предприятия ". - Для поддержки функций GKDI для всех устройств следует задать уровни работы домена и леса в Windows Server 2012 или более поздней версии. Дополнительные сведения об обновлении схемы см. в статье "Повышение функциональных уровней домена и леса" в доменных службах Active Directory. - Служба распространения корневых ключей (KDS) должна быть включена. Проверьте включённую службу с помощью оснастки сервисы - служба KdsSvc. Дополнительные сведения о создании корневого ключа KDS (kdssvc.dll) см. в статье "Создание корневого ключа KDS служб распространения ключей".