Date: Wed, 12 Dec 2001 12:55:55 +0100 From: "Roger 'Rocky' Vetterberg" <listsub@rambo.simx.org> To: Noah Davidson <Noah@oopz.com> Cc: "FreeBSD Security List (E-mail)" <freebsd-security@FreeBSD.ORG> Subject: Re: password changes Message-ID: <3C1745CB.40305@rambo.simx.org> References: <A6A82340FB3DB643A0678E3B10CD5AC1062F55@xela.oopz.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Noah Davidson wrote: >How can I change the password of a user and not be prompted to verify >it. We are changing our mail server to sendmail. I have all of the >passwords in plain text. I want to write a script that changes all 5000 >or so passwords. How can I do this? I would like to call passwd or >some command from a perl script to do this. Any Ideas would be very >helpful. > I once needed to generate several thousands of users, with passwords from a plain text file. I did this using a perl script to write a new /etc/master.passwd and then rebuild using the pwd_mkdb command. Generating the needed lines and create the needed /home directories was easy, and to get the correct passwords I used the following code snippet: #!/usr/bin/perl $pass = pop(@ARGV); $cryptpwd = crypt($pass, &salt); print "$cryptpwd"; sub salt { local($salt); local($i, $rand); local(@itoa64) = ( '0' .. '9', 'a' .. 'z', 'A' .. 'Z' ); for ($i = 0; $i < 8; $i++) { srand(time + $rand + $$); $rand = rand(25*29*17 + $rand); $salt .= $itoa64[$rand & $#itoa64]; } return $salt; } Just put it in a file and execute it with the plaintext password as first argument, and the script will print the encrypted password to use in /etc/master.passwd. I dont remember exactly where I found this perl code, but it was ripped from one of the standard utilities in FreeBSD, probably adduser or something similar. Hopes this helps. -- R To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-security" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3C1745CB.40305>