How to add users to Linux through a shell script
32,721
Output from "man 1 passwd":
--stdin
This option is used to indicate that passwd should read the new
password from standard input, which can be a pipe.
So to answer your question, use the following script:
echo -n "Enter the username: "
read username
echo -n "Enter the password: "
read -s password
adduser "$username"
echo "$password" | passwd "$username" --stdin
I used read -s
for the password, so it won't be displayed while typing.
Edit: For Debian/Ubuntu users -stdin
won't work. Instead of passwd
use chpasswd
:
echo $username:$password | chpasswd
Related videos on Youtube
Author by
Rastko Stamenkovic
Updated on September 18, 2022Comments
-
Rastko Stamenkovic over 1 year
The shell script that I have to write has to create new users and automatically assign them to groups. This is my code so far:
echo -n "Enter the username: " read text useradd $text
I was able to get the shell script to add the new user (I checked the
/etc/passwd
entry). However, I have tried and I am not able to get a passwd (entered by the user) to the newly created user before. If anyone could help me assign a password to the newly created user it would be of much help.-
terdon over 8 yearsHave you tried
man useradd
? -
steve over 8 yearsAlso look at stackoverflow.com/questions/714915/… where use of
passwd --stdin
is covered.
-
-
Lambert over 8 yearsOn my host (Linux Mint) the
--stdin
does not work:passwd: unrecognized option '--stdin'
-
Lambert over 8 yearsAlternative is to use
read -rs newpassword; useradd -p $(md5pass "$newpassword") $username
-
Rastko Stamenkovic over 8 yearsThe '--stdin' also does not work on my host. I tried the 'chpasswd' but that also does not seem to work. Any other advice
-
Tem over 8 yearswhich OS do you use?
-
Rastko Stamenkovic over 8 yearsI use QEMU Linux.
-
Rastko Stamenkovic over 8 yearsWith the updated version it works. Instead of creating a new group with the name of the username, is there a way to assign the user to a specific already created group?
-
Rastko Stamenkovic over 8 yearsI have resolved the issue by adding usermod -a -G "groupname" "username". This assigns the user to a secondary group.
-
countermode over 7 yearsA bit of explanation (esp. for lines -1 and -2) would be quite nice.