Semi-untested code follows: my $plaintext = "tstpw82!";
srand(time() ^ ($$ + ($$ << 15)));
my @chars = ('0'..'9','a'..'z','A'..'Z','!','+');
my $salt = $chars[int(rand(scalar @chars))] . $chars[int(rand(scalar @
+chars))];
print crypt($plaintext,$salt) . "\n";
This is just for generating the encrypted version of the
plaintext password. Maybe you already knew that, but here
it is anyway.
To update shadow is a mission of it's own. Most of the time
when I've done it in scripts, I use the following method:
- Create backup of shadow file (IMPORTANT!)
- Read shadow file into memory
- Do substitutions or additions
- Write new shadow file
Something like that... I'm sure some people will have
plenty of stuff to say about this approach, but it works
for me and I manage over 8000 user accounts. :)
... and no! That's not my real password in $plaintext! :)
update: In light of what cianoz wrote below,
I must say that I was a bit one-track minded there. My
post is valid for Solaris systems. :) I don't know if it's
possible to implement MD5 passwords with some sort of PAM,
and there's no such commmand as chpassword (I think).
|