Bug 42198 - Ошибка сегментирования при создании пользователя
Summary: Ошибка сегментирования при создании пользователя
Status: REOPENED
Alias: None
Product: Sisyphus
Classification: Development
Component: samba-dc (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 minor
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-03-21 17:04 MSK by Vera Blagoveschenskaya
Modified: 2024-02-13 13:25 MSK (History)
7 users (show)

See Also:


Attachments
smbpasswd.txt (33.32 KB, text/plain)
2022-03-22 11:59 MSK, Vera Blagoveschenskaya
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vera Blagoveschenskaya 2022-03-21 17:04:57 MSK
samba-client-4.14.12-alt2.x86_64

Стенд: p10 server x86_64

1) Выполнить команду
smbpasswd -a user_samba
2) Ввести пароль 2 раза

Результат: Ошибка сегментирования
Comment 1 Andrey Cherepanov 2022-03-21 17:51:43 MSK
Создайте такого пользователя и запустите с gdb smbpasswd -a user_samba, пожалуйста.

У меня не воспроизводится:
cas ~ # smbpasswd -a cas
New SMB password:
Retype new SMB password:
cas ~ #
Comment 2 Evgeny Sinelnikov 2022-03-22 03:25:07 MSK
Выполняется ли предусловие?
Локальный пользователь, для которого задаётся samba-пароль, должен быть уже создан.

Если утилита "падает" только в том случае когда пользователя не существует, это неприятно, то не критично. Непонятно ещё почему раньше на это не обращали внимание. Или это недавняя регрессия?
Comment 3 Vera Blagoveschenskaya 2022-03-22 11:58:54 MSK
(Ответ для Evgeny Sinelnikov на комментарий #2)
> Выполняется ли предусловие?
> Локальный пользователь, для которого задаётся samba-пароль, должен быть уже
> создан.
> 
> Если утилита "падает" только в том случае когда пользователя не существует,
> это неприятно, то не критично. Непонятно ещё почему раньше на это не
> обращали внимание. Или это недавняя регрессия?

# useradd user_samba
# smbpasswd -a user_samba
New SMB password:
Retype new SMB password:
Ошибка сегментирования

Отмечу, что тест выполнялся на p10 server x86_64 (сервер выступает в роли контроллера домена)
Проверила для p10 workstation x86_64 - ошибки нет.

gdb-лог в аттаче
Comment 4 Vera Blagoveschenskaya 2022-03-22 11:59:15 MSK
Created attachment 10441 [details]
smbpasswd.txt
Comment 5 Andrey Cherepanov 2022-03-23 12:39:33 MSK
Подтверждаю сегфолт на samba-dc из Sisyphus:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff34bb104 in der_free_general_string (str=0x555a0dcb6758) at ../../source4/heimdal/lib/asn1/der_free.c:43
43          free(*str);
(gdb) bt
#0  0x00007ffff34bb104 in der_free_general_string (str=0x555a0dcb6758)
    at ../../source4/heimdal/lib/asn1/der_free.c:43
#1  0x00007ffff34e8470 in free_PrincipalName (data=data@entry=0x5555558576e0)
    at source4/heimdal/lib/asn1/asn1_krb5_asn1.c:962
#2  0x00007ffff34e88c9 in free_Principal (data=0x5555558576e0) at source4/heimdal/lib/asn1/asn1_krb5_asn1.c:1123
#3  0x00007ffff35c2741 in krb5_free_principal (context=<optimized out>, p=0x5555558576e0)
    at ../../source4/heimdal/lib/krb5/principal.c:84
#4  krb5_free_principal (context=<optimized out>, p=0x5555558576e0) at ../../source4/heimdal/lib/krb5/principal.c:80
#5  0x00007ffff3329230 in setup_kerberos_keys (io=0x7fffffffd870)
    at ../../source4/dsdb/samdb/ldb_modules/password_hash.c:734
#6  setup_password_fields (io=0x7fffffffd870) at ../../source4/dsdb/samdb/ldb_modules/password_hash.c:2566
#7  0x00007ffff332bd50 in password_hash_mod_do_mod (ac=ac@entry=0x555556270580)
    at ../../source4/dsdb/samdb/ldb_modules/password_hash.c:4851
#8  0x00007ffff332c568 in get_domain_data_callback (req=<optimized out>, ares=<optimized out>)
    at ../../source4/dsdb/samdb/ldb_modules/password_hash.c:4240
#9  0x00007ffff368027f in ldb_kv_callback (ev=<optimized out>, te=<optimized out>, t=..., 
    private_data=<optimized out>) at ../../ldb_key_value/ldb_kv.c:1995
#10 0x00007ffff6e1d8f9 in tevent_common_invoke_timer_handler (te=te@entry=0x555555969800, current_time=..., 
    removed=removed@entry=0x0) at ../../tevent_timed.c:370
#11 0x00007ffff6e1da9c in tevent_common_loop_timer_delay (ev=ev@entry=0x5555555bab00) at ../../tevent_timed.c:442
#12 0x00007ffff6e1e288 in epoll_event_loop_once (ev=0x5555555bab00, location=<optimized out>)
    at ../../tevent_epoll.c:922
#13 0x00007ffff6e16f47 in std_event_loop_once (ev=0x5555555bab00, location=0x7ffff6640b3d "../../common/ldb.c:653")
    at ../../tevent_standard.c:110
#14 0x00007ffff6e1a3d4 in _tevent_loop_once (ev=ev@entry=0x5555555bab00, 
    location=location@entry=0x7ffff6640b3d "../../common/ldb.c:653") at ../../tevent.c:772
#15 0x00007ffff6639c8b in ldb_wait (handle=0x55555591b870, type=<optimized out>) at ../../common/ldb.c:653
#16 0x00007ffff6683d43 in dsdb_autotransaction_request () from /usr/lib64/samba/libsamdb-common-samba4.so
#17 0x00007ffff6686ec7 in dsdb_modify () from /usr/lib64/samba/libsamdb-common-samba4.so
#18 0x00007ffff7d2053c in ?? () from /usr/lib64/libsamba-passdb.so.0
#19 0x00007ffff7d210a8 in ?? () from /usr/lib64/libsamba-passdb.so.0
#20 0x00007ffff7d09353 in local_password_change () from /usr/lib64/libsamba-passdb.so.0
#21 0x0000555555559679 in ?? ()
#22 0x0000555555557fe7 in main ()
Comment 6 asdf 2023-10-28 17:08:05 MSK
Operating System: ALT Server 10.2 (Mendelevium)
Kernel: Linux 5.10.197-std-def-alt1
Architecture: x86-64

[root@h2 ~]# useradd user_samba
[root@h2 ~]# smbpasswd -a user_samba
New SMB password:
Retype new SMB password:
Ошибка сегментирования
[root@h2 ~]#
Comment 7 asdf 2023-10-29 01:14:56 MSK
(In reply to asdf from comment #6)
> Operating System: ALT Server 10.2 (Mendelevium)
> Kernel: Linux 5.10.197-std-def-alt1
> Architecture: x86-64
> 
> [root@h2 ~]# useradd user_samba
> [root@h2 ~]# smbpasswd -a user_samba
> New SMB password:
> Retype new SMB password:
> Ошибка сегментирования
> [root@h2 ~]#
Да, и сервер выступает в роли контроллера домена.

Поэтому использовать надо не smbpasswd (как указано в документации), а samba-tool user add user_samba.
Comment 8 Ivan A. Melnikov 2023-10-29 11:00:55 MSK
Segfault не может быть частью нормальной работы программы, это всегда баг.

Другое дело, что если это возникает при нетипичном/неправильном использовании, то это минорнота неблокирующая.
Comment 9 asdf 2023-10-29 13:48:22 MSK
(In reply to Ivan A. Melnikov from comment #8)
> Segfault не может быть частью нормальной работы программы, это всегда баг.
> 
> Другое дело, что если это возникает при нетипичном/неправильном
> использовании, то это минорнота неблокирующая.
Не вопрос, конечно, просто в случае домена контроллера smbpasswd вообще не должен был вызываться, т.к. требуется samba-tool.
Comment 10 asdf 2023-10-29 16:04:14 MSK
(In reply to asdf from comment #9)
> (In reply to Ivan A. Melnikov from comment #8)
> > Segfault не может быть частью нормальной работы программы, это всегда баг.
> > 
> > Другое дело, что если это возникает при нетипичном/неправильном
> > использовании, то это минорнота неблокирующая.
> Не вопрос, конечно, просто в случае домена контроллера smbpasswd вообще не
> должен был вызываться, т.к. требуется samba-tool.
Как-то не по-русски написал, простите.

Если правильно понимаю, то для типового случая, применяемого в текущем (p10) Альт Сервер, Samba в режиме контроллера домена (DC) - это несколько другой набор ПО, чем не в режиме DC. Поэтому и получается, что smbpasswd в случае DC и не должен применяться (вместо него применяется samba-tool).

Проблема воспроизводится в результате следования документации, где молча предполагается режим без DC (Глава 42).

https://docs.altlinux.org/ru-RU/alt-server/10.1/html-single/alt-server/index.html#idm46152578790336

Тему не изучал, как положено, за неимением времени, поэтому прошу не судить строго, если неправ.
Comment 11 Evgeny Sinelnikov 2023-11-23 08:56:43 MSK
Документацию, конечно, нужно прорабатывать.

При этом, падать ничего, конечно же, не должно. Предполагаю, что ошибка всё же имеется. Она связана с тем, что samba-dc собрана на других библиотеках.

Предположу, что вариант samba-dc-mitkrb5 (вместо samba-dc) не имеет таких проблем. Можете проверить?

Потенциально это проблеме могут подвержены все клиентские утилиты:
$ rpm -qf `which smbpasswd ` 
samba-client-4.17.12-alt1.x86_64

$ rpm -qf `which smbpasswd` -l | grep /bin
/usr/bin/cifsdd
/usr/bin/dbwrap_tool
/usr/bin/dumpmscat
/usr/bin/mdsearch
/usr/bin/mvxattr
/usr/bin/nmblookup
/usr/bin/oLschema2ldif
/usr/bin/regdiff
/usr/bin/regpatch
/usr/bin/regshell
/usr/bin/regtree
/usr/bin/rpcclient
/usr/bin/samba-regedit
/usr/bin/sharesec
/usr/bin/smbcacls
/usr/bin/smbclient
/usr/bin/smbcquotas
/usr/bin/smbget
/usr/bin/smbpasswd
/usr/bin/smbprint
/usr/bin/smbspool
/usr/bin/smbtar
/usr/bin/smbtree
Comment 12 Evgeny Shesteperov 2024-02-13 13:25:58 MSK
В версии samba-4.19.4-alt1 выводится ошибка:

# smbpasswd -a testpassword
New SMB password:
Retype new SMB password:
Failed to modify account record CN=testpassword,CN=Users,DC=samba,DC=testdomain to set user attributes: setup_io: extraction of salt for old aes256-cts-hmac-sha1-96 key failed: Невозможно выделить память
Failed to modify entry for user testpassword