useradd has the -p option, that lets you specify a password to be assigned
to a new user instead of having to do this as an extra step. Although I
think this is bad practice in general, putting plaintext passwords on the
command line, it doesn't work in a big way.
useradd bob -p bobspassword
this puts "bobspassword" in /etc/shadow instead of calling crypt, or some
other encryption function.
This is the correct behaviour for the -p option to useradd. You must encrypt the
passwd yourself. From the useradd man page:
The encrypted password, as returned by crypt(3).
The default is to disable the account.