If more than one person is using your Linux machine at home, or you are managing a server that provides access to multiple users, the
useradd command is essential for creating users.
Also, many of the services you use as a developer may require their own user accounts to function. So even as a solo dev on your own machine, you may find yourself reaching for these commands when you install MySQL or something similar.
You can get a full overview of the various options available to you by viewing the man page for the utility:
But if that is overwhelming, here's a breakdown of some of the common options you might use when creating a user.
Create a user
The simple format for this command is
useradd [options] USERNAME.
useradd test (as the root user - prefix with
sudo if you are not logged in as root).
This will create a user called test, but it's a limited operation and will not create other useful things like their home directory or password!
Add a password
You then add a password for the test user by using the
passwd test. This will prompt you to enter a password for the user.
There is an option for adding an encrypted password via the
-p option on
useradd, but this is not recommended for security purposes.
Note that the
-p option doesn't allow you to input a plaintext password, it expects you to encrypt it first. This is intentionally difficult, because you should not do it! Just use the
Other common options
In order to create a user with the default home directory use the following option:
useradd -m test
This user now has a /home/test directory.
To change the home directory, you can pass an extra option to modify this, for example:
useradd -m -d /alternate test
By default, your created users will likely have the default login shell bin/bash or bin/sh, which will be defined in
You can override this default with the
useradd -s usr/bin/zsh test
Putting it all together
To construct the whole command, you put the options in one after another - the order does not matter - and end with the username you wish to create.
So creating a user with a home directory and a customized shell would look like this:
useradd -m -s /usr/bin/zsh user
And then you would add a password for the user:
Read the Fine Manual
Now that you've seen the basics of what this tool can do, hopefully the man page is a little more navigable.
man useradd will show you how to add things like expiry dates on the account, assign groups, and so on.