Bug 53868 - Не работает пример gkdi_example
Summary: Не работает пример gkdi_example
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: libgkdi (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: august@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-04-16 15:46 MSK by Artem Varaksa
Modified: 2025-07-24 11:07 MSK (History)
4 users (show)

See Also:


Attachments
Пример работает как и задумано (24.20 KB, image/png)
2025-04-22 18:02 MSK, august7147
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2025-04-16 15:46:00 MSK
Шаги
====

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
Comment 1 august7147 2025-04-22 18:02:29 MSK
Created attachment 18273 [details]
Пример работает как и задумано
Comment 2 august7147 2025-04-22 18:04:27 MSK
Пример работает если использовать не <samba dc ip>, а <samba dc hostname>.

Он не предназначен для работы с ip адресами, иначе бы в его исходном коде было указано [host|ip].

Пример запуска
./gkdi_example dc.domain.alt DOMAIN.ALT username
Comment 3 august7147 2025-04-22 18:05:35 MSK
Добавил скриншот с примером запуска и успешного исполнения.
Comment 4 Aleksandr Sysoev 2025-07-24 10:28:59 MSK
По-прежнему не удаётся запустить пример, однако теперь другая ошибка:
$ ./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

===========================================
Возможно для работы примера нужны какие-то дополнительные/особые настройки контроллера/клиента?
Comment 5 august7147 2025-07-24 11:07:52 MSK
Здравствуйте. Насколько я вижу вы тестируете библиотеку относительно сервера 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 служб распространения ключей".