adduser command is used to create a new user in Linux. It is a front-end tool that simplifies the low-level useradd command. It is more user-friendly and interactive. In the backend, it uses a Perl script to provide a nice interactive high-level tool. It uses the configuration information in /etc/adduser.conf to perform actions.
Basic Syntax
adduser [options] username
Common options are:
-b
,--base-dir BASE_DIR
: Set default base directory.-c
,--comment COMMENT
: Add user's description (typically full name).-d
,--home HOME_DIR
: Set user's home directory.-D
: Allows you to view or modify default values used when creating new user accounts. Supported options to use with -D are--base-dir BASE_DIR
,---expiredate EXPIRE_DATE
,--inactive INACTIVE,
--gid GROUP
,--shell SHELL.
-e
,--expiredate EXPIRE_DATE
: Set account expiration date.-f
,--inactive INACTIVE
: Set days after password expiry until account disablement.-g
,--gid GROUP
: Set user's primary group.-G
,--groups GROUP1[,GROUP2,...[,GROUPN]]]
: Add user to additional groups.-k
,--skel SKEL_DIR
: Set skeleton directory for user's home.-K,
--key KEY=VALUE
: Override default values.-m
,--create-home
: Create user's home directory.-M
: Do not create user's home directory.-N
,--no-user-group
: Skip creating group with the same name as user.-o
,--non-unique
: Allow non-unique user IDs.-p
,--password PASSWORD
: Set user's password (not recommended).-r
,--system
: Create a system account.-s
,--shell SHELL
: Set user's login shell.-u
,--uid UID
: Set user's numerical ID.-U
,--user-group
: Create group with the same name as user.-Z
,--selinux-user SEUSER
: Set SELinux user.
Remember some options are specific to Distros. For example -D option is not supported on Debian-based distros.
Using adduser Command
Let's look into some of the most common use cases of the adduser command.
1. Add a new normal user
By default, adduser command adds a normal user to the system. To add a new user simply type adduser followed by the name of the user.
Syntax:
adduser [username]
For example to add a normal user with name bob, type:
sudo adduser bob
adduser command does the following by default when adding a new user:
- Creates a user using the username provided. Choose the first available UID from the range specified in the configuration file.
- Creates a group having the same name as the user. Choose available GID.
- Adds user to the group created.
- Creates a home directory for the user (/home/<username>).
- Starts passwd command to set up the user's password.
- Asks for additional user details.
To add an organizational user account ie system account use --system option. The difference between a normal user is it has no expiry date and uid is below 999.
2. Add a user with a different home directory
By default adduser command creates user's home directory under /home. You can add --home or -d option to create a new user account with a different directory.
Syntax:
adduser [username] --home [directory-path]
For example to create a user named tom with home directory /mnt/data/tom, type:
sudo adduser tom --home /mnt/data/tom
3. Adding a new user to a group
Using adduser command you can easily add an existing user to an existing group.
Syntax:
sudo adduser [existing-username] [exiting-group-name]
For example to add a user named john to the group named developers, type:
sudo adduser tom developers
Make sure the user name and group already exist in the system.
4. Add a User with no password
The adduser with --disabled-login allows to you to add a user with no password. Until the password is set the user won't be able to login.
Syntax:
sudo adduser --disabled-login [username]
For example to add a user named bobs with no password, type:
This command doesn't prompt for a password. Later if you want the user to login, create a password using passwd command.
5. Add a user with disabled password
The adduser command with --disabled-password option allows you to add a user account with no password. But the user can still possible to login the system using SSH keys.
Syntax:
sudo adduser --disabled-password [username]
For example to add a user named john with no password, type:
This is useful when you need a user with only ssh key login for secure authentication.
You can use --gecos option with empty string to avoid asking for finger information such as Full Name, Room Number, Work Phone, Home Phone, and Other. Example:
sudo adduser --disabled-password --gecos "" bob
6. Use a different config file
Instead of using the default configuration file, we can instruct adduser command to use a custom config file. Use adduser command with --conf option for this.
Syntax:
sudo adduser [username] --conf [custom-config.conf]
Example:
sudo adduser thomas --conf custom-config.conf
7. Add a user with a different shell
Instead of the default shell, you can manually specify the users login shell using --shell option. The default shell is specified in the /etc/adduser.conf configuration file - normally /bin/bash or /bin/sh is used.
You can use cat /etc/shells to list all your available shells in your Linux system. From the list choose your desired shell.
For example, to add a user named tomas with login shell zsh, type:
sudo adduser tomas --shell /bin/zsh
You can verify the login shell of the user by listing passwd file as follows:
grep -i tomas /etc/passwd
Comments