Bug 34906
| Summary: | Не работает удаление пароля командой passwd -d | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> |
| Component: | passwd | Assignee: | Dmitry V. Levin <ldv> |
| Status: | REOPENED --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P3 | CC: | ldv, nbr, placeholder, sem |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
| See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=46367 | ||
passwd-1.0.14-alt1 -> sisyphus: Sun Jul 01 2018 Dmitry V. Levin <ldv@altlinux> 1.0.14-alt1 - Refuse to change password for different logged in user by default (closes: #33440). - passwd -d: clarify the meaning of delete option (closes: #34906). - passwd -S: support detection of modern encryption modes (by vt@). (В ответ на комментарий №1)
> passwd-1.0.14-alt1 -> sisyphus:
>
> Sun Jul 01 2018 Dmitry V. Levin <ldv@altlinux> 1.0.14-alt1
> - Refuse to change password for different logged in user by default
> (closes: #33440).
> - passwd -d: clarify the meaning of delete option (closes: #34906).
Так «установить пустой пароль» это тоже какой-то эвфимизм.
Попробую спросить по-другому:
У созданного командой useradd пользователя нет пароля. После установки пароля командой passwd пароль появляется. Какой командой вернуться к первоначальному состоянию «нет пароля»?
Если это passwd -d, почему это называется empty password?
И почему не работает, выдавая вышеприведённую ошибку:
Ошибка при операциях с маркером проверки подлинности
Вот описание passwd -d из Fedora:
man:
-d, --delete
This is a quick way to delete a password for an account. It will set the named account passwordless. Available to root only.
passwd --help:
-d, --delete удалить пароль, сняв блокировку (только root)
(In reply to comment #2) > (В ответ на комментарий №1) > > passwd-1.0.14-alt1 -> sisyphus: > > > > Sun Jul 01 2018 Dmitry V. Levin <ldv@altlinux> 1.0.14-alt1 > > - Refuse to change password for different logged in user by default > > (closes: #33440). > > - passwd -d: clarify the meaning of delete option (closes: #34906). > Так «установить пустой пароль» это тоже какой-то эвфимизм. Пустой пароль - это пароль нулевой длины. > Попробую спросить по-другому: > У созданного командой useradd пользователя нет пароля. После установки пароля > командой passwd пароль появляется. Какой командой вернуться к первоначальному > состоянию «нет пароля»? Зачем? Для блокировки существует -l. > Если это passwd -d, почему это называется empty password? > И почему не работает, выдавая вышеприведённую ошибку: > Ошибка при операциях с маркером проверки подлинности Потому что запрещено устанавливать пустой пароль. (In reply to comment #3) > Вот описание passwd -d из Fedora: > > man: > -d, --delete > This is a quick way to delete a password for an account. It will > set the named account passwordless. Available to root only. > > passwd --help: > -d, --delete удалить пароль, сняв блокировку (только root) Не понимаю, что это значит. (Ответ для Dmitry V. Levin на комментарий #5) ... > Не понимаю, что это значит. Данная бага была о том, что операция удаления пароля не работает. Удаление пароля — это его снятие с учётной записи, то есть после этой операции вход по паролю невозможен. Другими словами, это приведение файла /etc/tcb/USER/shadow к виду USER:*:18549:::::: Описание в man 8 passwd такое: -d, --delete Удалить пароль для указанной записи -d, --delete Set an empty password for the specified account АВТОР Dmitry V. Levin <ldv@altlinux.org> $ rpm -qf /usr/share/man/man8/passwd.8.xz passwd-1.0.14-alt1.x86_64 # which passwd /usr/sbin/passwd # passwd --help ... passwd wrapper implements traditional passwd options using real passwd utility or shadow utils. Но passwd -d не работает: # passwd -d USER chpasswd: (user USER) pam_chauthtok() failed, error: Authentication token manipulation error chpasswd: (line 1, user USER) password not changed В логах: окт 15 11:05:07 example.com chpasswd[24371]: pam_tcb(chpasswd:chauthtok): conversation failed окт 15 11:05:07 example.com chpasswd[24371]: pam_tcb(chpasswd:chauthtok): New password not acceptable Из руководства к АЛЬТ 8 СП: -d , --delete –удалить пароль для указанной записи; Просьба удалить эту опцию (-d) из passwd и, самое главное, документации. Она все равно не работает и не будет работать. Воспроизведено на текущем Sisyphus: passwd 1.0.14-alt1 (не менялся с 01.07.2018), shadow-utils 4.20.2-alt1, pam 1.7.2-alt1, tcb-utils 1.2-alt2.
# useradd testu; echo testu:Qwerty123SecretPass | chpasswd
# LANG=C passwd -d testu
chpasswd: (user testu) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user testu) password not changed
# echo $?
0
# getent shadow testu | cut -d: -f2 | cut -c1-10
$y$j9T$svX (хэш прежний)
# passwd -S testu
testu Password set, yescrypt encryption.
То же самое после passwd -l. Причина в двух местах passwd/wrapper.c: do_delete() на строках 139-142 сводится к chpasswd(""), то есть обёртка пытается назначить пустой пароль, который стек password из system-auth-common (pam_passwdqc) закономерно отвергает; а на строках 113-116 статус потомка не проверяется, поэтому passwd -d возвращает 0 при явном отказе. При этом passwd --help и man 8 passwd обещают "-d, --delete Set an empty password for the specified account". В #46367 сопровождающий уже отмечал, что зануление пароля в pam_tcb не поддерживалось никогда.
Итого с 2018 года не изменилось ничего: опция задокументирована, гарантированно не работает и молчит о неуспехе. Минимальная правка — возвращать код потомка и поправить документацию; просьба из комментария от 2025-06 (убрать -d вовсе) — более радикальный вариант того же.
|

Description
Vitaly Lipatov 2018-05-14 20:23:40 MSK