#!/bin/bash
# Created by Ben Okopnik on Thu Mar 22 22:50:21 CDT 2007

[ "$UID" -eq 0 ] || { echo "You need to run this as root."; exit 1; }

source .chrootrc

# User names must be at least 3 chars long and must not contain anything
# other than lowercase letters, numbers, periods, or underscores.
while [[ ${#user} -lt 3 || ! $user =~ ^[a-z0-9_.]*$ ]]
do
	read -p "User (3 or more chars, lower-case): " user
done

read -p "Full name: " name
name=`echo $name|sed 's/://g;s/[ \t]/ /g'`

while [[ ${#pass} -lt 6 ]]
do
	read -sp "Password (6 or more chars, will not be echoed): " pass
	echo
done

crypt=`PASS=$pass perl -wle'
      my (@chars) = ("a".."z","A".."Z","0".."9",".","/");
	  sub md5_salt {
	  	my $return = q|$1$|;
	  	$return .= $chars[rand($#chars+1)] foreach (0..7);
	  	return $return;
      }
	  print crypt($ENV{PASS}, md5_salt())'`

# Look for first "open" UID above 1000
MAX=`perl -F: -walne'$h{$F[2]}++;END{for (1000..2000){if (!defined $h{$_}){print; exit;}}}' $dir/etc/passwd`

echo "$user:x:$MAX:$MAX:$name:/home/$user:/bin/bash" >> $dir/etc/passwd
echo "$user:x:$MAX:" >> $dir/etc/group
echo "$user:$crypt:14500:0:99999:7:::" >> $dir/etc/shadow

# Just to neaten things up :)
sort -t: -k3 $dir/etc/group -o $dir/etc/group
sort -t: -k3 $dir/etc/passwd -o $dir/etc/passwd

mkdir -p $dir/home/$user; chown $user:$user $dir/home/$user

# Populate the ~/.bash_profile
echo -e "PATH=/bin:/sbin:/usr/bin:/usr/sbin\nLANG=C\nLC_ALL=C\nPAGER=/usr/bin/less\nexport PATH LANG LC_ALL PAGER" > $dir/home/$user/.bash_profile

