8

I use the following command to create a user in a linux machine:

useradd -d /home/dummy -g idiots -m -p 12345689 dummy

The user is created and the home directory as well.
The problem is that I can not log-in to the system using this account since the -p expects the encrypted password returned by crypto.

Question:I want to create a user via a bash script and I don't know the encrypted password by crypto. How can I do it so that I am able to create this user automatically via a script and get arround the problem with the password?

4 Answers 4

17

You can use openssl to generate pre encrypted password strings to use with the -p option to useradd

echo "P4sSw0rD" | openssl passwd -1 -stdin $1$Jxmpx1Da$Y8MzBctIyDW8/7pFPbNWD1 

The -1 says to generate a MD5 password hash. The salt is automatically generated.

You can then use

useradd -d /home/dummy -g idiots -m -p $(echo "P4sSw0rD" | openssl passwd -1 -stdin) dummy 

to add the user. To do this interactively hiding the password

useradd -d /home/dummy -g idiots -m -p $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) dummy 
12
  • Is openssl command available in ALL linux installations by default?Can I count on it? Commented Mar 8, 2012 at 10:51
  • Also echo will show the password in the console.How can I avoid this? Commented Mar 8, 2012 at 10:52
  • @Jim: If not all, then 99%. It's part of the SSH client and server packages, so it's almost always installed, though technically I don't believe it's required. You can count on it being installed by default, but not necessarily that someone has not uninstalled it. Commented Mar 8, 2012 at 10:56
  • @Jim: Couldn't say with 100% certainty it'll be on all linux installations. Commented Mar 8, 2012 at 10:57
  • @Iain:What about echo?How can I avoid that? Commented Mar 8, 2012 at 10:59
3

Apparently, you can use

echo "password" | passwd dummy --stdin 

I've never tried this.

Alternatively, you could put the user's public key in /home/dummy/.ssh/authorized_keys and forget about passwords entirely. This is the best option security-wise.

2
  • echo will show the password in the console.How can I avoid this? Commented Mar 8, 2012 at 10:52
  • You could put the password in a file and use cat passwordfile | passwd dummy --stdin or passwd --stdin dummy < passwordfile. On another note, I just tested this --stdin option on a Ubuntu box and it did not work. The version of passwd I have doesn't support that option. Yours may not either. One of the other answers using chpasswd, openssl or newusers might be better if you must have passwords. Commented Mar 8, 2012 at 11:53
3

That`s how I do it:

# cat user-pw_list john:p455W0rD geany:p455W0rD # cat CreateUsers.sh #!/bin/bash # # filename: CreateUsers.sh # usage: cat "User:passwd" | $0 # set -e # set -x while read ; do USER=${REPLY%%:*} PWD=${REPLY##*:} # alternative for random passwd, where $RANDOM is a bash function #PWD=${REPLY%%:*}$RANDOM$RANDOM echo -e "adding User $USER " # for disabled users: /usr/sbin/nologin, otherwise /bin/bash /usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER echo "$USER:$PWD" | chpasswd --md5 $USER ## also add user to samba: #echo -e "$PWD\n$PWD" | pdbedit -t -u $USER done 
1
  • 1
    Could you please explain this solution?I am not very good with bash scripts Commented Mar 8, 2012 at 12:33
2

As you are going to use a bash script, perhaps the good old newusers command would be helpful to you? It reads its input from a text file formatted like this:

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell 

And the password in that file should be clear text. You can list as many users as you wish in the input file.

For more information see man newusers.

2
  • I get:bash: newusers: command not found and No manual entry for newusers Commented Mar 8, 2012 at 10:54
  • Oh, so SLES does not bundle newusers (by default), even though Fedora, Debian and RHEL seem to do so. Commented Mar 8, 2012 at 10:56

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.