[devel] Обновление до krb5-1.15.1

Alexander Bokovoy ab на altlinux.org
Вс Авг 20 18:19:51 MSK 2017


2017-08-20 13:16 GMT+03:00 Evgeny Sinelnikov <sin на altlinux.org>:
> 20 августа 2017 г., 9:08 пользователь Alexander Bokovoy
> <ab на altlinux.org> написал:
>> 2017-08-20 6:20 GMT+03:00 Evgeny Sinelnikov <sin на altlinux.org>:
>>> Здравствуйте,
>>>
>>> в связи с тем, что патчи от 1.16.x всё-таки имеют смысл обновление
>>> затянулось. В итоге было решено две проблемы:
>>>
>>> Первая потребовала вот такого патча:
>>>
>>> diff --git a/krb5/src/tests/gssapi/t_ccselect.py
>>> b/krb5/src/tests/gssapi/t_ccselect.py
>>> index 6be6b4e..47d9ce6 100755
>>> --- a/krb5/src/tests/gssapi/t_ccselect.py
>>> +++ b/krb5/src/tests/gssapi/t_ccselect.py
>>> @@ -53,7 +53,7 @@ if 'No Kerberos credentials available' not in output:
>>>  ccdir = os.path.join(r1.testdir, 'cc')
>>>  ccname = 'DIR:' + ccdir
>>>  r1.env['KRB5CCNAME'] = ccname
>>> -r2.env['KRB5CCNAME'] = ccname
>>> +r2.env['KRB5CCNAME'] = ccname + '2'
>>> .
>>>  # Use .k5identity from testdir and not from the tester's homedir.
>>>  r1.env['HOME'] = r1.testdir
>>>
>>> Может быть кто-нибудь подскажет как оно работает в Fedora?
>> ccname DIR:... -- это коллекция ccaches, а не один. Может хранить
>> билеты из разных доменов. Смысл теста как раз в том, чтобы проверить,
>> выбирает ли ccselect правильный билет из коллекции по имени принципала
>> из соответствующего домена.
>>
>>
>>> Смысл в том, что на один и тот же кеш ключей задётся два разных kinit.
>> Это не один и тот же ccache. Внутри коллекции отдельные ccache
>> хранятся отдельными файлами (в DIR:, в других типах коллекций они
>> хранятся иными способами). Каждый отдельный ccache в коллекции
>> соответствует своему домену. Поэтому kinit foo на BAR.Z и kinit foo на Z.BAR
>> могут сохранить соответствующие билеты в одной коллекции.
>>
>> Не надо ломать то, что вы не понимаете.
>
> Спасибо, я очень надеялся, что вы поясните. Давайте, разбирёмся в деталях.
>
> А каков тогда критерий выбора из коллекции? По имени host на localhost'
> можно выбрать как host/localhost.localdomain на KRBTEST2.COM, так и
> host/localhost.localdomain на KRBTEST.COM. Разве не так?
>
> Или смысл fallback в том, чтобы проигнорировать @KRBTEST2.COM для
> host/localhost.localdomain и найти его для alice?
> Или в том, что host на localhost - это не host/localhost.localdomain и
> его, вообще нет в CC, и поэтому нужно взять @KRBTEST.COM?
При работе с ccache collection код использует тот реалм, который
указан в имени принципала. Если он там отсутствует, то применяется
тот, который указан в качестве умолчания в krb5.conf.

Далее, если в krb5.conf есть dns_canonicalize_hostname=true, то
localhost будет разрешен через getaddrinfo() и превратится в
localhost.localdomain.
Поскольку реалм не указан и прямого соответствия в domain_realm секции
krb5.conf нет, то используется реалм по умолчанию.

> _____________________
>
> ./t_ccselect.py:
>
> [...]
> gsslocal = 'h:host на localhost'
> [...]
> # Show current ccache
> r1.run(['../../clients/klist/klist', '-A'])
>
> # Check ccache selection using a fallback realm (default realm).
> output = r1.run(['./t_ccselect', gsslocal])
> if output != (alice + '\n'):
>     fail('alice not chosen via default realm fallback')
> output = r2.run(['./t_ccselect', gsslocal])
> if output != (zaphod + '\n'):
>     fail('zaphod not chosen via default realm fallback')
> [...]
>
> *** [33] Executing: ../../clients/klist/klist -A
> Ticket cache: DIR::/usr/src/RPM/BUILD/krb5-1.15.1/src/tests/gssapi/testdir/cc/tktDK3fgK
> Default principal: zaphod на KRBTEST2.COM
>
> Valid starting     Expires            Service principal
> 08/20/17 10:03:33  08/21/17 10:03:33  krbtgt/KRBTEST2.COM на KRBTEST2.COM
> 08/20/17 10:03:33  08/21/17 10:03:33  host/localhost.localdomain на KRBTEST2.COM
> 08/20/17 10:03:33  08/21/17 10:03:33  host/foo.krbtest2.com@
> 08/20/17 10:03:33  08/21/17 10:03:33  host/foo.krbtest2.com на KRBTEST2.COM
>
> Ticket cache: DIR::/usr/src/RPM/BUILD/krb5-1.15.1/src/tests/gssapi/testdir/cc/tkt
> Default principal: alice на KRBTEST.COM
>
> Valid starting     Expires            Service principal
> 08/20/17 10:03:33  08/21/17 10:03:33  krbtgt/KRBTEST.COM на KRBTEST.COM
> 08/20/17 10:03:33  08/21/17 10:03:33  host/localhost.localdomain на KRBTEST.COM
> 08/20/17 10:03:33  08/21/17 10:03:33  host/foo.krbtest.com@
> 08/20/17 10:03:33  08/21/17 10:03:33  host/foo.krbtest.com на KRBTEST.COM
> *** [33] Completed with return code 0
> *** [34] Executing: ./t_ccselect h:host на localhost
> gss_accept_sec_context: Unspecified GSS failure.  Minor code may
> provide more information
> gss_accept_sec_context: Request ticket server
> host/localhost.localdomain на KRBTEST2.COM not found in keytab (ticket
> kvno 1)
> *** [34] Completed with return code 1
> *** Failure: ./t_ccselect failed with code 1.
> *** Last command (#34): ./t_ccselect h:host на localhost
> *** Output of last command:
> gss_accept_sec_context: Unspecified GSS failure.  Minor code may
> provide more information
> gss_accept_sec_context: Request ticket server
> host/localhost.localdomain на KRBTEST2.COM not found in keytab (ticket
> kvno 1)
Можешь добавить дамп окружений до исполнения этого теста?

-- 
/ Alexander Bokovoy


Подробная информация о списке рассылки Devel