Usermod Command in Linux
6 min read
usermod is a command-line utility that allows you to modify a user’s login information.
This article covers how to use the
usermod command to add a user to a group, change a user shell, login name, home directory, and more.
The syntax of the
usermod command takes the following form:
usermod [options] USER
Only root or users with
access can invoke
usermod and modify a user account. On success, the command does not display any output.
Add a User to a Group
The most typical use case of the
usermod is adding a user to a group.
To add an existing user to a secondary group, use the
-a -G options followed the group’s name and the username:
usermod -a -G GROUP USER
If you want to add the user to multiple groups at once, specify the groups after the
-G option separated with
, (commas) with no intervening whitespace.
For example, to add the user
linuxize to the
games group, you would run the following command:
sudo usermod -a -G games linuxize
Always use the
-a (append) option when adding a user to a new group. If you omit the
-a option, the user will be removed from the groups not listed after the
If the user or group doesn’t exist, the command will warn you.
Change User Primary Group
To change a user’s primary group, invoke the
usermod command with by the
-g option followed the group’s name and the username:
sudo usermod -g GROUP USER
In the following example, we are changing the primary group of the user
usermod -g developers linuxize
Each user can belong to exactly one primary group and zero or more secondary groups.
Changing the User Information
To change the GECOS (the full name of the user) information, run the command with the
-c option followed by the new comment and username:
usermod -c "GECOS Comment" USER
Here is an example showing how to add additional information to the user linuxize:
usermod -c "Test User" linuxize
This information is stored in the
Changing a User Home Directory
On most Linux systems, the user home directories are named after the name of the user and created under the
If, for some reason, you want to change the user’ home directory invoke the
usermod command with by the
-d option followed the absolute path of the new home directory and the name of the user:
usermod -d HOME_DIR USER
By default, the command doesn’t move the content of the user’s home directory to the new one. To move the content, use the
-m option. If the new directory does not already exist, it is created:
usermod -d HOME_DIR -m USER
Here is an example showing how to change the home directory of the user
usermod -d /var/www www-data
Changing a User Default Shell
The default shell is the shell that is run after you log in to the system. By default, on most Linux systems, the default shell is set to Bash Shell.
To change the user’s default shell, run the command with the
-s option followed the absolute path of the shell and the name of the user:
usermod -s SHELL USER
In the example below, we are changing the user shell to Zsh:
sudo usermod -s /usr/bin/zsh linuxize
You can find out what shells are available on your system by displaying the
/etc/shells file’s content.
Changing a User UID
UID (the user identifier) is a number assigned to each user. It is used by the operating system to refer to a user.
To change the user UID, invoke the command with the
-u option followed the new UID and the name of user:
usermod -u UID USER
The example below shows how to change the “UID” number to “1050”:
sudo usermod -u 1050 linuxize
The UID of the files owned by the user and are located in the user’s home directory, and the user’s mailbox file will be changed automatically. The ownership of all other files must be changed manually.
Changing a User Name
Although not very often, sometimes you may want to change the name of an existing user. The
-l option is used to change the username:
usermod -l NEW_USER USER
In the example below, we are renaming the user
lisa to “1050”:
sudo usermod -l linuxize lisa
When changing the username, you may also want to change the user’s home directory to reflect the new username.
Setting a User Expiry Date
The expiry date is the date on which the user account will be disabled. To set the user’s expiry date, use the
sudo usermod -e DATE USER
The expiry date must be set using the format
For example, to disable the user
2022-02-21, you would run the following command:
sudo usermod -e "2022-02-21" linuxize
To disable the expiration of an account, set an empty expiry date:
sudo usermod -e "" linuxize
chage -l command to view the user’s expiry date:
sudo chage -l linuxize
Last password change : Jul 24, 2018 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
The expiration date is stored in the
Locking and Unlocking a User Account
-L option allows you to lock a user account:
usermod -L USER
The commands will insert an exclamation point (
!) mark in front of the encrypted password. When the password field in the
/etc/shadow file contains an exclamation point, the user will not be able to login to the system using password authentication. Other login methods, like key-based authentication
or switching to the user
are still allowed. If you want to lock the account and disable all login methods, you also need to set the expiration date to 1.
The following examples shows how to lock the user
sudo usermod -L linuxize
sudo usermod -L -e 1 linuxize
To unlock a user, run
usermod with the
usermod -U USER
We have shown you how to use the
usermod command to set user account information.
Feel free to leave a comment if you have any questions.