This is not a bug in passwd, but in autopasswd, which is part of the expect rpm. (I did not find expect in the list of components above.) The /usr/bin/autopasswd expect script does not work on recent systems such as pentium 200+ MHz. It does not give the passwd program time to change the tty mode, so the first password is printed in clear before passwd is ready to read it. Below is my fixed version. It has two improvements, in addition to working correctly: (1) it allows the username and password to be piped in on standard input so they do not appear in the process table (the command-line form is also accepted as an alternative), and (2) it returns a nonzero error code if passwd rejects the proposed password, allowing the script that calls autopassword to use a loop that tries different passwords until one is accepted. #!/usr/bin/expect -f # $Id: autopasswd.expect,v 1.6 1999/08/27 19:39:18 moniot Exp $ # Wrapper to run passwd(1 non-interactively # Usage: autopasswd username password # or echo " username password" | autopasswd # Returns code 0 if successful, nonzero otherwise (bad password) # # Author: R. Moniot, based on simpler version found in expect distribution # Date: 27 August 1999 if "$argc > 0" { # Get username and password from commandline if present. set username [lindex $argv 0] set password [lindex $argv 1] } else { # Otherwise read username and password from stdin: they must be separated # by exactly one blank space and contain no blanks themselves. expect_user { -re "(.*) (.*)" { set username $expect_out(1,string); set password $expect_out(2,string) } } } spawn passwd $username # The sleep is needed to give passwd time # to get ready. expect { "password:" {sleep 1; send "$password\r"} # send } expect { "BAD PASSWORD:*" {exit 1} "password:" {sleep 1; send "$password\r"} # resend } expect { "successfully" {exit 0} # OK (Linux flavor) eof {exit 0} # OK (AIX flavor) timeout {exit 2} # something went wrong } exit 0
expect is a part of tcltk. Reassigning.
Fixed (by adding a slightly modified copy of your patch) in tcltk-8.2.3-36 in Raw Hide.