Summary: | Ошибка сегментирования при создании пользователя | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Vera Blagoveschenskaya <vercha> | ||||
Component: | samba-dc | Assignee: | Evgeny Sinelnikov <sin> | ||||
Status: | REOPENED --- | QA Contact: | qa-sisyphus | ||||
Severity: | minor | ||||||
Priority: | P5 | CC: | alimektor, asdf, cas, iv, jqt4, lepata, sin | ||||
Version: | unstable | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Vera Blagoveschenskaya
2022-03-21 17:04:57 MSK
Создайте такого пользователя и запустите с gdb smbpasswd -a user_samba, пожалуйста. У меня не воспроизводится: cas ~ # smbpasswd -a cas New SMB password: Retype new SMB password: cas ~ # Выполняется ли предусловие? Локальный пользователь, для которого задаётся samba-пароль, должен быть уже создан. Если утилита "падает" только в том случае когда пользователя не существует, это неприятно, то не критично. Непонятно ещё почему раньше на это не обращали внимание. Или это недавняя регрессия? (Ответ для 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-лог в аттаче Created attachment 10441 [details]
smbpasswd.txt
Подтверждаю сегфолт на 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 () 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 ~]# (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. Segfault не может быть частью нормальной работы программы, это всегда баг. Другое дело, что если это возникает при нетипичном/неправильном использовании, то это минорнота неблокирующая. (In reply to Ivan A. Melnikov from comment #8) > Segfault не может быть частью нормальной работы программы, это всегда баг. > > Другое дело, что если это возникает при нетипичном/неправильном > использовании, то это минорнота неблокирующая. Не вопрос, конечно, просто в случае домена контроллера smbpasswd вообще не должен был вызываться, т.к. требуется samba-tool. (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 Тему не изучал, как положено, за неимением времени, поэтому прошу не судить строго, если неправ. Документацию, конечно, нужно прорабатывать. При этом, падать ничего, конечно же, не должно. Предполагаю, что ошибка всё же имеется. Она связана с тем, что 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 В версии 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 |