How To Add User In Linux – Adding New User With Useradd

Adding a new account to a Linux system requires administrative privileges and a specific command. If you have ever wondered how to add user in linux, you are in the right place. This guide walks you through every step, from basic commands to advanced options. You will learn to create users quickly and securely.

Managing users is a core skill for any Linux administrator. Whether you run a home server or a corporate system, adding users is a daily task. The process is straightforward once you know the tools. Let us start with the simplest method.

Understanding User Management In Linux

Linux treats every person who uses the system as a user. Each user has a unique ID and a home directory. The root user has full control, while normal users have limited permissions. When you add a user, you assign them a username, password, and group.

There are two main commands for adding users: useradd and adduser. The first is a low-level tool, the second is a friendlier wrapper. Both get the job done, but adduser is easier for beginners. We will cover both methods below.

How To Add User In Linux

Now we get to the main event. To add a user, open a terminal and use the useradd command. You must run it as root or with sudo. Here is the basic syntax:

sudo useradd username

Replace username with the name you want. For example, to add a user called john, type:

sudo useradd john

This creates the user but does not set a password or create a home directory. You need extra options for that. Let us look at a more complete example.

Creating A User With A Home Directory

Most users need a home directory. Use the -m flag to create one automatically:

sudo useradd -m john

This creates /home/john and copies default files from /etc/skel. The user can now store personal files there. Without -m, no home folder is created.

Setting A Password For The New User

After adding the user, set a password with the passwd command:

sudo passwd john

You will be prompted to type the password twice. Make it strong and memorable. The password is stored securely in /etc/shadow.

Specifying A Custom User ID (UID)

Every user gets a numeric ID. By default, Linux assigns the next available UID above 1000. You can set a custom UID with the -u option:

sudo useradd -u 1500 -m john

This creates john with UID 1500. This is useful for syncing users across networked systems.

Adding A User To A Specific Group

Users can belong to one primary group and multiple secondary groups. Use the -g flag for the primary group and -G for secondary groups:

sudo useradd -g developers -G sudo,admin -m john

This sets developers as the primary group and adds john to sudo and admin groups. The user now has sudo privileges.

Using The Adduser Command (Easier Method)

If you prefer a guided process, use adduser. This command asks you questions and sets defaults automatically:

sudo adduser john

It prompts for a password, full name, and other details. It also creates the home directory and sets up the user environment. This is the recommended method for beginners.

Checking If The User Was Created

After adding a user, verify it exists. Look in the /etc/passwd file:

grep john /etc/passwd

You should see a line like john:x:1001:1001:John,,,:/home/john:/bin/bash. This confirms the user is registered. Also check the home directory exists:

ls -la /home/

You should see john listed there.

Common Options For Useradd

The useradd command has many options. Here are the most useful ones:

  • -m – Create home directory
  • -d – Specify a custom home directory path
  • -s – Set the login shell (e.g., /bin/bash)
  • -e – Set an expiry date for the account (YYYY-MM-DD)
  • -f – Number of days after password expiry before account is disabled
  • -c – Add a comment (usually the full name)
  • -r – Create a system account (UID below 1000)

Example with multiple options:

sudo useradd -m -d /home/john -s /bin/bash -c "John Doe" -e 2025-12-31 john

This creates a user with a custom shell, comment, and expiry date.

Adding A User With Sudo Privileges

To give a user administrative rights, add them to the sudo group. On Debian/Ubuntu systems, use:

sudo usermod -aG sudo john

On Red Hat/CentOS, the group is called wheel:

sudo usermod -aG wheel john

Now john can run commands with sudo. Test it by logging in and typing sudo whoami. It should output root.

Creating Multiple Users At Once

If you need to add many users, use a script. Here is a simple bash loop:

for user in alice bob charlie; do
    sudo useradd -m $user
    echo "$user:password123" | sudo chpasswd
done

This creates three users with the same password. For production, use a secure password generator and set individual passwords.

Removing A User

To delete a user, use userdel. Add the -r flag to remove the home directory:

sudo userdel -r john

This removes the user and their files. Be careful: this action is irreversible.

Managing User Groups

Groups help organize permissions. Create a group with groupadd:

sudo groupadd developers

Add a user to a group with usermod:

sudo usermod -aG developers john

Remove a user from a group with gpasswd:

sudo gpasswd -d john developers

List all groups a user belongs to:

groups john

Setting Account Expiry And Password Policies

You can enforce security policies using the chage command. For example, to set a password expiry of 90 days:

sudo chage -M 90 john

To see current settings:

sudo chage -l john

You can also set an account to expire on a specific date:

sudo chage -E 2025-12-31 john

This is useful for temporary employees or students.

Common Mistakes And Troubleshooting

Here are frequent issues and how to fix them:

  • Permission denied: You forgot sudo. Always run user management commands with sudo.
  • User already exists: Check /etc/passwd for duplicates. Use a different username.
  • Home directory not created: Use the -m flag with useradd.
  • Cannot log in: The password may not be set. Use sudo passwd username.
  • Shell not found: Ensure the shell path is correct. Common shells are /bin/bash and /bin/sh.

If you get an error like “useradd: cannot lock /etc/passwd”, another process is using the file. Wait a moment and try again.

Using Graphical Tools

If you prefer a GUI, most Linux distributions have a user management tool. On Ubuntu, search for “Users” in the settings. On Fedora, use the “Users” app in the system menu. These tools are intuitive but less flexible than the command line.

For servers, the command line is faster and more reliable. You can automate user creation with scripts, which is impossible with GUI tools.

Security Best Practices

When adding users, follow these guidelines:

  • Use strong passwords with at least 12 characters
  • Limit sudo access to only those who need it
  • Disable root login via SSH (use PermitRootLogin no in /etc/ssh/sshd_config)
  • Set password expiry policies with chage
  • Remove unused accounts promptly
  • Use SSH keys instead of passwords for remote access
  • Audit user accounts regularly with awk -F: '$3>=1000 {print $1}' /etc/passwd

These steps keep your system secure and prevent unauthorized access.

Automating User Creation With Scripts

For large environments, write a script. Here is a bash script that reads usernames from a file:

#!/bin/bash
while IFS= read -r user; do
    sudo useradd -m "$user"
    sudo passwd "$user"
done < users.txt

Create a users.txt file with one username per line. Run the script with sudo bash add_users.sh. This saves time and reduces errors.

You can also use newusers command to bulk import users from a formatted file. See the man page for details.

Understanding User Files

User information is stored in several files:

  • /etc/passwd – User account details (username, UID, GID, home, shell)
  • /etc/shadow – Encrypted passwords and expiry info
  • /etc/group – Group definitions
  • /etc/gshadow – Group passwords (rarely used)
  • /etc/skel – Default files copied to new home directories

Never edit these files manually unless you know what you are doing. Use the standard commands instead.

Adding A User Without Sudo

If you do not have sudo access, you cannot add users. Only the root user or users in the sudo group can create accounts. If you need to add a user and lack privileges, contact your system administrator.

Some systems allow non-root users to run specific commands via sudoers configuration, but this is rare.

Frequently Asked Questions

What is the difference between useradd and adduser?

useradd is a low-level command with many options. adduser is a Perl script that calls useradd and prompts for details interactively. For beginners, adduser is easier.

How do I add a user without a home directory?

Omit the -m flag when using useradd. For example: sudo useradd john. This creates the user but no home folder.

Can I add a user to multiple groups at once?

Yes, use the -G option with useradd or usermod. Separate group names with commas: sudo usermod -aG group1,group2,group3 john.

How do I add a user in Linux with a specific shell?

Use the -s option: sudo useradd -m -s /bin/zsh john. This sets the login shell to Zsh instead of Bash.

What is the command to add a user in Linux for a system account?

Use the -r flag: sudo useradd -r systemuser. System accounts have UIDs below 1000 and are used for services.

Conclusion

Now you know how to add user in linux using both useradd and adduser. The process is simple: run a command with sudo, set a password, and optionally configure groups and shell. Always verify the user was created correctly. With practice, you will add users in seconds.

Remember to follow security best practices and automate repetitive tasks. User management is a foundation of Linux administration. Master it, and you will manage your system with confidence.

If you run into trouble, check the man pages (man useradd) or search online communities. The Linux community is helpful and full of experts. Keep learning and experimenting.