#1060460 reportbug: adduser prompts for current password when adding user, impossible to change passphrase

#1060460#5
Date:
2024-01-11 19:44:11 UTC
From:
To:
Dear Maintainer,

Given
  # adduser testuser
  info: Adding user `testuser' ...
  info: Selecting UID/GID from range 1000 to 59999 ...
  info: Adding new group `testuser' (1001) ...
  info: Adding new user `testuser' (1001) with group `testuser (1001)' ...
  info: Creating home directory `/home/testuser' ...
  info: Copying files from `/etc/skel' ...
  Current password:

What does this mean? What am I supposed to write here?

If I respond with mismatched passwords then
  Current password: abc
  New password: def
  Retype new password: def
  passwd: Authentication token manipulation error
  passwd: password unchanged
  Try again? [y/N]

And if with the same then:
  adduser testuser
  info: Adding user `testuser' ...
  info: Selecting UID/GID from range 1000 to 59999 ...
  info: Adding new group `testuser' (1001) ...
  info: Adding new user `testuser' (1001) with group `testuser (1001)' ...
  info: Creating home directory `/home/testuser' ...
  info: Copying files from `/etc/skel' ...
  Current password: asd
  New password: asd
  Retype new password: asd
  The password has not been changed.
  New password: asd
  Retype new password: asd
  The password has not been changed.
  New password: asd
  Retype new password: asd
  The password has not been changed.
  passwd: Authentication token manipulation error
  passwd: password unchanged
  Try again? [y/N]

And if I click through the rest, the user is disabled:
  $ getent passwd testuser
  testuser:x:1001:1001:test,test,test,test,test:/home/testuser:/bin/bash
  # getent shadow testuser
  testuser:!:19733:0:99999:7:::

If I then passwd testuser then
  Current password:
  New password:
  Retype new password:
  passwd: Authentication token manipulation error
  passwd: password unchanged
when running as root!

In the journal I see
  Jan 11 20:40:14 chrust sudo[10942]: nabijaczleweli : TTY=pts/0 ; PWD=/home/nabijaczleweli ; USER=root ; COMMAND=/usr/bin/passwd testuser
  Jan 11 20:40:14 chrust sudo[10942]: pam_unix(sudo:session): session opened for user root(uid=0)
  by nabijaczleweli(uid=1000)
  Jan 11 20:40:16 chrust passwd[10944]: pam_zfs_key(passwd:chauthtok): dataset chrust-zoot/home/testuser not found
  Jan 11 20:40:16 chrust passwd[10944]: pam_zfs_key(passwd:chauthtok): old token mismatch
  Jan 11 20:40:33 chrust sudo[10942]: pam_unix(sudo:session): session closed for user root
  Jan 11 20:40:35 chrust sudo[10946]: nabijaczleweli : TTY=pts/0 ; PWD=/home/nabijaczleweli ; USER=root ; COMMAND=/usr/bin/passwd testuser
  Jan 11 20:40:35 chrust sudo[10946]: pam_unix(sudo:session): session opened for user root(uid=0)
  by nabijaczleweli(uid=1000)
  Jan 11 20:40:35 chrust passwd[10948]: pam_zfs_key(passwd:chauthtok): dataset chrust-zoot/home/testuser not found
  Jan 11 20:40:35 chrust passwd[10948]: pam_zfs_key(passwd:chauthtok): old token mismatch
  Jan 11 20:40:38 chrust passwd[10948]: pam_unix(passwd:chauthtok): authentication failure; logname=nabijaczleweli uid=0 euid=0 tty= ruser= rhost=  user=testuser
  Jan 11 20:40:38 chrust passwd[10948]: pam_unix(passwd:chauthtok): user password changed by another process
  Jan 11 20:40:40 chrust sudo[10946]: pam_unix(sudo:session): session closed for user root

#1060460#10
Date:
2024-01-12 03:38:03 UTC
From:
To:
Hi,

Thanks for reporting.

I can reproduce all these with `adduser`. But everything works when I use
`useradd` and `passwd` (both with root, of course). I suspect there are some
differences between how `adduser` and `useradd` use PAM modules.

I personally have no experience in debugging PAM, and this seems a
upstream bug (?). Maybe you could also report this to upstream?

Thanks,
Shengqi Chen