Bug 34906

Summary: Не работает удаление пароля командой passwd -d
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: passwdAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: ldv, placeholder
Version: unstable   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=46367

Description Vitaly Lipatov 2018-05-14 20:23:40 MSK
Не знаю, что такое удаление пароля (см. man 8 passwd), некоторые даже считают, что после удаления пароля можно входить в систему без пароля.
Я предполагаю, что удаление пароля приведёт к тому, что пользователь не сможет зайти в систему с паролем, который у него был.

Но на обычной системе (tcb, никаких sssd и т.п.) получаю ошибку:
# passwd -d akv
chpasswd: (user akv) pam_chauthtok() failed, error:
Ошибка при операциях с маркером проверки подлинности
chpasswd: (строка 1, пользователь akv) пароль не изменён
Comment 1 Repository Robot 2018-07-02 02:05:01 MSK
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@).
Comment 2 Vitaly Lipatov 2018-07-02 11:16:44 MSK
(В ответ на комментарий №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?
И почему не работает, выдавая вышеприведённую ошибку:
Ошибка при операциях с маркером проверки подлинности
Comment 3 Vitaly Lipatov 2018-07-02 11:19:04 MSK
Вот описание 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)
Comment 4 Dmitry V. Levin 2018-07-02 11:27:48 MSK
(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?
> И почему не работает, выдавая вышеприведённую ошибку:
> Ошибка при операциях с маркером проверки подлинности

Потому что запрещено устанавливать пустой пароль.
Comment 5 Dmitry V. Levin 2018-07-02 11:28:55 MSK
(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)

Не понимаю, что это значит.
Comment 6 Vitaly Lipatov 2020-10-15 11:07:00 MSK
(Ответ для 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
Comment 7 Vitaly Lipatov 2020-10-21 19:15:44 MSK
Из руководства к АЛЬТ 8 СП:

-d , --delete –удалить пароль для указанной записи;