kazmax - Home Server on Linux

Change Linux user information - usermod

To change user information, use the usermod command.

It is possible to change the user's home directory, group, deadline, etc. We will explain here how to change groups, how to change home directories, commands, options, formats and usage examples.

The usermod command changes /etc/passwd, /etc/shadow, /etc/group file.

Last Update : December 12, 2018

Change Linux user information - usermod Contents

  1. Usage and options of "usermod" command
  2. Usage example of "usermod" command

1. Usage and options of "usermod" command


usermod [ -c comment ] [ -d home_dir [ -m ] ]
        [ -e expire_date ] [ -f inactive_time ] 
        [ -g initial_group ] [ -G group [ ,... ] ]
        [ -l login_name ] [ -p passwd ] 
        [ -s shell ] [ -u uid [ -o ] ] [ -L | -U ] login

login is the user account name.
[ ] Can be omitted. If you do not specify at least one option, nothing will be changed. When actually executing, [] is not required.


-c comment Change the comment of login.
-d home_dir Change the home directory of login to "home_dir". Also, if -m is appended to the option, the contents of the current home directory will be moved to the new home directory. Also, if the directory does not exist, it is newly created.
-e expire_date The date on which the user account will be disabled. The date is specified in the format YYYY-MM-DD.
-f inactive_days The number of days after a password expires until the account is permanently disabled. A value of 0 disables the account as soon as the password has expired, and a value of -1 disables the feature.
-g initial_group Change the default group to initial_group.
-G group,[...] Add subgroup to which the account belongs. Separate groups with commas. If you do not specify a group that the user originally belonged to here, it will be deleted from that group.
-l login_name Change the login name of the user from login to login_name. Passwords etc are intact. Let's change the name of the home directory.
-s shell Change the login shell to shell.
-u uid Change the ID number of the user to the specified one.
-L Lock the user's password. Locked accounts will not be able to log in with password authentication.
-U Unlock the user's password. It is the opposite of L.


Using the -L option adds ! to the password entry in /etc/passwd or /etc/shadow.

You can lock even if you add ! Directly, and on the contrary if you delete! You can unlock it.

[root@localhost ~]# grep foo/etc/shadow

[root@localhost ~]# vi /etc/shadow
↑ Password authentication can not be performed.


About the case of setting a home directory by creating a new directory using the -d home_dir -m option.

For example, if you create a directory called /home/users/foo, you have to create it up to /home/users.

2. Usage example of "usermod" command

Change the user "foo" as follows.

  • Change the default group to "bar_group"
  • Make "foo" belong to subgroups "group1", "group2", "group3".
  • Change the home directory to "/home/users/foo" (create a new directory).

Confirm current account information

[root@localhost ~]# id -a foo
uid=514(foo) gid=514(foo) groups=514(foo)

[root@localhost ~]# grep foo /etc/passwd
foo :514:514::/home/foo:/bin/bash

[root@localhost ~]# ls -d /home/users/foo
ls: /home/users/foo: No such file or directory
Execute the command.
[root@localhost ~]# usermod -g bar_group -G group1,group2,group3 -d /home/users/foo -m foo

[root@localhost ~]# id -a foo
uid=514(foo) gid=518(bar_group) groups=518(bar_group),515(group1),516(group2),517(group3)

[root@localhost ~]# grep foo /etc/passwd