I am trying to create a new user in Ubuntu 14.04 LTS from the bash command line. I use the following commands:
sudo useradd -c "Samwise the Brave" sam
sudo passwd sam
Enter new UNIX password: hello-1234
Retype new UNIX password: hello-1234
passwd: password updated successfully
After creating this new user, I encountered 3 issues:
I am not able to log into Ubuntu using user sam. Whenever I log in, I am sent back to the login screen.
When I look into the
/etc/passwd
file, I can see that there are no default shells defined for user sam:cat /etc/passwd | grep sam sam:x:1003:1003:Samwise the Brave:/home/sam:
Sam's home folder was not created, i.e.
/home/sam
doesn't exist.
Any clues about what could cause all these issues?
I should note here that when I create a user using the Unity Control Center, these problems do not occur. But I would like to be able to use the command line since I have dozens of users to create.
First notice that it's better to use adduser and not useradd.
Now back to your command:
You should run the command in the following manner:
man useradd
So you miss to use
-s
to add your login shell and the-m
to create your home.If you want to add multiple users in the same time, it's better to use the command
newusers
. It'll simplify your task.man newusers
Here some tutorial about
newusers
command:Create user
Create user's home directory
Define login shell
Delete User
Deleter User's Home Directory
While you are missing flags and the other answers aren't necessarily wrong, considering running adduser if you want it more comprehensive in the future. It's a prettier version of useradd. Namely it'll make a home directory by default unlike useradd. Also note when it asks for a ton of stuff, it stores that inline on the /etc/passwd file and you don't have to fill any of it out.
Thanks everyone. With your answers I've been able to fix the problem using the following command lines.
The password is set with
passwd
so it is already encrypted (otherwise "hello-1234" would appear not encrypted in /etc/passwd).You are missing flags in the useradd command. '-m' to create user directory, '-s /bin/bash' to add the bash shell. The default is to not create a user directory and to assign the default shell. My system did the same thing when I tested it so it looks like ubuntu 14.04 uses blank as the default shell. You can't login because you have no shell.
Create default home directory for existing user in terminal (Question 335961 , 3rd Answer)
From Ubuntu Manpage for useradd
How do you change the default shell for ALL USERS to bash? Question 335961