[CentOS] Add instantly active local user accounts *with* password using useradd -p option ?

Thu Jul 9 07:33:18 UTC 2009
Chris Geldenhuis <chris.gelden at iafrica.com>

Niki Kovacs wrote:
> Hi,
> I need to setup a load of user accounts on a series of machines, for 
> testing purposes. I'm using a script to do this, but the only problem I 
> have so far: I have to activate them all manually by doing passwd user1, 
> passwd user2, passwd user3, etcetera. The useradd man page mentions a -p 
> option to define a password, but I can't seem to get this to work. 
> Here's what I'd like to be able to do:
> # useradd -c "Gaston Lagaffe" -p abc123 -m glagaffe
> And put that line in a script, so the account is *instantly* activated. 
> I tried it, but to no avail. Looks like there's some burning loop I have 
> to jump through first :o)
> No security considerations here for the moment, since it's for testing.
> Any idea how this works?
> Niki
> _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> http://lists.centos.org/mailman/listinfo/centos
Hi Niki,

I have a script called "usergen" that does this for 1 user at a time. 
You can wrap this in a loop and feed it a list of names for the accounts 
that you need to create.

The script is:
PWD=`mkpasswd -l 8 -s 2`; export PWD
echo "user = $1         password = $PWD"
/usr/sbin/useradd -c "$2" -m -k /home/skeleton -n -p $PWD $1
echo $PWD| passwd --stdin $1

You can of course vary the parameters for password generation by 
changing the length (-l) and allowing special characters etc.

The directory /home/skeleton contains all the files that you need to set 
up in each user's account. This can also be a customized .bashrc to set 
environmental variables etc. The line with the echo command is there so 
that you have a record of the password generated for each user.

Hope this helps