Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Jun 2001 11:14:03 -0400 (EDT)
From:      David Miner <david@slis-two.lis.fsu.edu>
To:        <freebsd-security@FreeBSD.ORG>
Subject:   Encrypted passwords
Message-ID:  <Pine.BSF.4.30_heb2.09.0106061108460.49859-100000@slis-two.lis.fsu.edu>

next in thread | raw e-mail | index | archive | help
A while back there was a good discussion on using encrypted passwords to
"automatically" create user accounts.

I haave a need to create classroom accounts every semester and (borrowing
freely from adduser) created the following perl script.

But something is not right and I have to go in and manually change the
passwords to what I want.

The program asks for a password file name and the file contains passwords
that I have approved as meeting my standards.  The problem seems to be in
how they get encrypted.

Suggestions, please?

-------------------Begin Program-----------------------
#!/usr/bin/perl
sub check_root {
    die "You are not root!\n" if $< && !$test;
}


sub salt {
    local($salt);               # initialization
    local($i, $rand);
    local(@itoa64) = ( '0' .. '9', 'a' .. 'z', 'A' .. 'Z' ); # 0 .. 63

    # to64
    for ($i = 0; $i < 8; $i++) {
        srand(time + $rand + $$);
        $rand = rand(25*29*17 + $rand);
        $salt .=  $itoa64[$rand & $#itoa64];
    }

    return $salt;
}

sub get_pw_file {
        print "Enter password file name:  ";
        chop($read = <STDIN>);
        open (P1, $read);
        @pwd1 = <P1>;
        print "Password file read", "\n";
        close P1;
}

#main
&get_pw_file;

print "Enter path to home directories: ";
chop($home=<STDIN>); # default HOME
print "Enter class name: ";
chop($b=<STDIN>); #class name
print "Enter first number wanted: ";
chop($a=<STDIN>); #first number wanted
print "Enter number of users wanted: ";
chop($r=<STDIN>); #number of users wanted
$c=$r+$a;
$s = "/bin/csh";
open (DEL,">$b\-del");
open (PWD, ">$b\-pwd");

for (;$a<($c);$a++) {
  $name="$b\-$a";
  $fullname= "LIS".$name;
  $userhome="$home\/$name";
  print $name," ",$pwd1[$a]," \n";
  print (DEL "pw userdel -n $name \n");
  print (PWD "The password for $name is $pwd1[$a] \n");

  $cryptpwd = "";
  $cryptpwd = crypt($pwd1[$a], &salt);
  system(`pw useradd -n $name -c $fullname -d $userhome -s $s -m; chpass -p $cryptpwd $name`);
  system(`mkdir $userhome\/public_html`);
  system(`chmod 755 $userhome\/public_html`);
  system(`chown $name:websitedev $userhome\/public_html`);
}
close ;
-----------------End program-------------------------
---------------------------------------------------------------------
David R. Miner                                   miner@lis.fsu.edu
Systems Integrator                               voice: 850-644-8107
School of Information Studies                    fax:   850-644-6253
Florida State University
Tallahassee, FL  32306-2100



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?Pine.BSF.4.30_heb2.09.0106061108460.49859-100000>