>#!/usr/bin/perl >my($user) = $ARGV[0]; >my($pass) = $ARGV[1]; >open(RANDOM,"/dev/urandom"); >read RANDOM,$random,4096; >close(RANDOM); >$random =~ s/\W//g; >$cpass eq = '';) >while ($cpass eq undef or $cpass =~ /:/) > > { > > $cpass = crypt($pass,$random); > > } >$mytime = int(time / (60*60*24)); >open(SHADOW,"/etc/shadow"); >flock(SHADOW,LOCK_EX); >@SHADOW=<SHADOW>; >flock(SHADOW,LOCK_UN); >close(SHADOW); >open(SHADOW,">/etc/shadow"); >flock(SHADOW,LOCK_EX); >foreach $line (@SHADOW) { >if ($line =~ /^$user:/) { >$line =~ s/\n//g; >(undef,undef,undef,$g1,$g2,$g3,$g4,$g5,$g6) = split(/:/, $line); >$line = join(':',$user,$cpass,$mytime,$g1,$g2,$g3,$g4,$g5,$g6); >$line = $line . "\n"; >} >print SHADOW $line; >} >flock(SHADOW,LOCK_UN); >close(SHADOW); Украинские братья работают за еду? :) А если используется pam_tcb? А если это FreeBSD?
|