usermod command is one of the several Linux commands system administrators have at their disposal for user management. It is used to modify existing user account details, such as username, password, home directory location, default shell, and more.
In this tutorial, you will learn how to use the
usermod command in Linux to change user login information.
- A system running Linux
- Access to the command line
usermod Linux Syntax
The basic syntax for the
usermod command is:
usermod [options] [username]
usermod command modifies configuration files containing user account information. Those files are:
/etc/passwd– information regarding users’ accounts
/etc/shadow– user security-related information
/etc/group– information about groups
/etc/gshadow– group security-related information
/etc/login.defs– shadow password suite configuration
usermod Command Examples
Below is a list of
usermod options, along with the option-specific syntax and examples.
Add Information to a User
usermod with the
-c option to add a piece of information about a user to the
/etc/passwd file. This helps identify the user and provides space for temporary user-related comments.
sudo usermod -c "[information]" [username]
getent command to check the user-related entry in the
The entry now contains the comment added with
Set User’s Home Directory
When you create a user in Linux, the system automatically creates a home folder for them in
/home/[username]. To change the location of the user’s home folder, use the
sudo usermod -d [directory-location] [username]
The example above changed the user’s home folder from
getent command confirms the successful change.
-d option does not move the home folder’s content to the new location. If the user has previously utilized the home folder to store their files, add the
-m option to move the content of the user’s home directory:
sudo usermod -d [location] -m [username]
In the case of the user from the example above, the command looks like this:
sudo usermod -d /var/mike -m mike
Note: You cannot use
usermod to change the name of the currently logged in user. Furthermore, when changing the user’s ID (UID), make sure the user is not currently executing any processes.
Set User’s Account Expiry Date
User accounts do not expire in Linux by default. Use the
chage -l command to check account aging information for a user:
sudo chage -l [username]
As the example above shows, the account is set not to expire. Change this by using
usermod with the
-e option. It allows you to specify the year, month, and day of the account expiry:
sudo usermod -e [YYYY-MM-DD] [username]
Confirm the successful change by checking the account with the
chage -l command again:
Set User’s Shell
usermod -s to change the default shell for a single user:
sudo usermod -s [shell] [username]
If the change was successful,
getent shows the new default shell at the end of the entry.
Change User’s UID
A UID (user identifier) is the unique number assigned to the user upon account creation with the
useradd command. The
/etc/login.defs file defines the range of UID values. Change a user’s UID with the
usermod -u command:
sudo usermod -u [new-UID] [username]
passwd entry, find UID right after the username and password:
Change User’s Login Name
Change a username by adding the
-l option. The syntax is as follows:
sudo usermod -l [newname] [oldname]
As the example above shows, using the old username to check the
/etc/passwd file no longer returns data. However, the same data is now available under the new name.
NAME_REGEX value in the
/etc/adduser.conf file defines the standards for new username creation. However,
usermod does not enforce the same standards for modifying usernames. While any string of characters is accepted as a new username with
usermod -l, it is still advisable to adhere to standard naming conventions.
Lock and Unlock a User
Lock a user account by using the
sudo usermod -L [username]
Once the account has been locked with
-L, the user’s login attempts fail upon typing the password:
To unlock the account you previously locked, type
usermod -U followed by the account name:
sudo usermod -U [username]
As you see in the example above, the password now works again, and the zsh shell initiates.
Set Password for a User
sudo usermod -p [password] [username]
However, this method of creating a password is not recommended since the password is visible in the
/etc/shadow file. If you use the grep command to look for a username in the
/etc/shadow file, the entry contains the plain-text version of the password created with
Change User’s Primary Group
Change the primary group of a user with
sudo usermod -g [group] [username]
id command confirms the successful change of the primary group:
Add a User to a Supplementary Group
Aside from their primary group, users can be members of any number of supplementary groups. The
-G option adds the user to a supplementary group:
sudo usermod -G [group] [username]
However, if the user already belongs to some supplementary groups,
usermod -G removes them from those groups and adds only to the ones specified after the command.
In the example below, the user is already a member of a supplementary group. The combination of the
-G options adds the user to the specified group and leaves them in the supplementary group they were already a member of.
sudo usermod -a -G [group] [username]
Change User’s Account Using Multiple Options
Use multiple options in one command for a more convenient way to edit a user. The example below shows a
usermod command that:
- changes the home folder and the shell,
- sets an account expiry date,
- adds a comment,
- changes the UID, and
- adds the user to a supplementary group.
sudo usermod -d [home-folder] -s [shell] -e [YYYY-MM-DD] -c "[comment]" -u [UID] -aG [group] [username]
Display All usermod Commands and Arguments
usermod help, use the
For a more detailed list of options and functions, use the man command:
This guide explained the use of the
usermod command, along with its numerous options. After reading it, you should know how to use the command to modify user account settings and login information.