Linux Change or Rename User Name and UID

How do I change user name (rename user name) or UID under a Linux operating system using command line tools? How do I change or rename username in Linux?

You need to use the usermod command to change user name under a Linux operating systems. This command modifies the system account files to reflect the changes that are specified on the command line. Do not edit /etc/passwd file by hand or using a text editor such as vi. This page explains how to change or rename username in Linux using the usermod command.

Linux Change or Rename User Command Syntax

Tutorial details
Difficulty Easy (rss)
Root privileges Yes
Requirements None
Time 5m
The syntax is as follows to rename by user name:
usermod -l login-name old-name
  • We use the usermod command in Linux to rename user account. The name of the user will be changed from the old-name to login_name. Nothing else is changed. In particular, the user’s home directory name should probably be changed to reflect the new login name.

The syntax is as follows to rename by a UID (user ID):
usermod -u UID username
Where,

  • The numerical value of the user’s ID (UID) . This value must be unique unless the -o option is used. The value must be non-negative. Values between 0 and 99 are typically reserved for system accounts. Any files which the user owns and which are located in the directory tree rooted at the user’s home directory will have the file user ID changed automatically. Files outside of the user’s home directory must be altered
    manually.

List all users in Linux system

Type the following cat command:
cat /etc/passwd
One can use the grep command to filter out only user names:
grep -w '^username' /etc/passwd
grep -w '^jerry' /etc/passwd

Another option is to use the cut command:
cut -d: -f1 /etc/passwd
Sample outputs:

daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
....
..
....
vivek
raj
marlena
tristan
wendy
rob
systemd-coredump
dnsmasq
kernoops
rtkit
whoopsie
usbmux
cups-pk-helper
nm-openvpn
speech-dispatcher
saned
colord
hplip
geoclue
pulse
gnome-initial-setup
gdm
tcpdump
nvidia-persistenced
tss
nm-openconnect
vnstat
lxd
postfix

How to Change or Rename Username and UID in Linux

Let us see how to rename user login. First, make sure user name is not logged into the server and any other process is not running under the same user name. I also recommend that you backup any data or server files before changing user names.

View current user and group membership for user named tom

First get user identity using the id command:
id tom
Next use the grep command to grab login info about user named tom from the /etc/passwd file
grep '^tom:' /etc/passwd
See group info about user named tom using the groups command:
grep 'tom' /etc/group
groups tom

Find home directory permissions for user named tom, run the following ls command:
ls -ld /home/tom/
Finally, see all Linux process owned by user and group named tom using the ps command:
ps aux | grep tom
ps -u tom

Fig.01: Getting info about user named ‘tom’ on a Linux based system

Rename and change username from tom to jerry on Linux

Type the usermod command as follows:
# id tom
# usermod -l jerry tom
## Verify ###
# id tom
# id jerry
# ls -ld /home/tom

A note about running process

You may see an error as follows if tom is logged in and running jobs:

# usermod -l jerry tom
usermod: user tom is currently used by process 6886

You need to kill all Linux process owned by user named tom and forcefully logged them out of the system:

# pkill -u tom pid
# pkill -9 -u tom
# usermod -l jerry tom

Rename and change primary groupname from tom to jerry

Type the usermod command as follows:
# id tom
# groupmod -n jerry tom
## Verify it ###
# id tom
# ls -ld /home/tom

Sample outputs:

Fig.02: Sample session renaming user on a Linux based server

How to change user home directory from /home/tom/ to /home/jerry

The syntax is as follows:
# usermod -d /home/jerry -m jerry
# id jerry
# ls -ld /home/jerry

Sample outputs:

uid=1001(jerry) gid=1001(jerry) groups=1001(jerry)
drwxr-xr-x 2 jerry jerry 4096 Apr 21 15:53 /home/jerry/

How to change user tom UID from 5001 to 10000

Type the usermod command as follows:
# id tom
# usermod -u 10000 tom
# id tom

Getting help about usermod command

You can pass the --help option to the usermod command. For instance, type the following command at the shell prompt in Linux:
usermod --help

Options Description
-c OR --comment COMMENT new value of the GECOS field
-d OR --home HOME_DIR new home directory for the user account
-e OR --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f OR --inactive INACTIVE set password inactive after expiration to INACTIVE
-g OR --gid GROUP force use GROUP as new primary group
-G OR --groups GROUPS new list of supplementary GROUPS
-a OR --append append the user to the supplemental GROUPS mentioned by the -G option without removing the user from other groups
-h OR --help display this help message and exit
-l OR --login NEW_LOGIN new value of the login name
-L OR --lock lock the user account
-m OR --move-home move contents of the home directory to the new location (use only with -d)
-o OR --non-unique allow using duplicate (non-unique) UID
-p OR --password PASSWORD use encrypted password for the new password
-R OR --root CHROOT_DIR directory to chroot into
-P OR --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s OR --shell SHELL new login shell for the user account
-u OR --uid UID new UID for the user account
-U OR --unlock unlock the user account
-v OR --add-subuids FIRST-LAST add range of subordinate uids
-V OR --del-subuids FIRST-LAST remove range of subordinate uids
-w OR --add-subgids FIRST-LAST add range of subordinate gids
-W OR --del-subgids FIRST-LAST remove range of subordinate gids
-Z OR --selinux-user SEUSER new SELinux user mapping for the user account

Conclusion

In this tutorial, you learned how to change or rename username and UID in Linux using the usermod command. Read man pages of usermod(8) and groupmod(8) commands for more information see this page.

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
63 comments… add one
  • Mark Feb 21, 2014 @ 17:54

    Also make sure your new username/group is in sshd_config for allowed groups.

  • jooe15 Mar 26, 2014 @ 19:30

    usermod not found? so i am using a zsh and i can’t find usermod, its not even in man — can’t find it in bash either. am i missing something?

  • sorefromubuntu Jun 19, 2014 @ 18:58

    I am not a novice, but clearly not learned enough to fix this damaging issue I just created, so thanks in advance for your help…

    1. I followed these instructions to a tee in order to change my old username into a new one: https://www.cyberciti.biz/faq/howto-change-rename-user-name-id

    2. I also continued with specific home directory intsructions found here: http://jesin.tk/change-home-directory-in-linux/)…

    Now my username, group and home folder are all changed and permissions/ownership correct, as well as new user has been set to new home. I even ran the `cp -f /home/username/* /home/new_home_dir/` to copy over all home files to new folder. However, this didn’t work so well in my favor…

    PROBLEM
    ——-

    I can login, I can access files in home, but ALL of my desktop, settings and home files are gone. Back to square 1, with only 1 clue in my new home folder: two files by the name of README and *Access-Your-Private-Data.desktop*.

    **Problem Key:**

    Old username: `OLD`

    New username: `NEW`

    New group: `NEWG1`

    My User ID Info:
    > uid=1000(NEW) gid=1000(NEWG1)
    > groups=1000(NEWG1),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),124(sambashare)

    UID `1000` has not changed even though the username changed.
    OLD was the user `1000`, as was `OLD` the home directory name.
    I changed the username to `NEW`, same UID (`1000`), and changed `OLD` group name to `NEWG1`.

    I did all of this from command line, by hitting `Ctrl+Alt+F1` from the login screen, then logging into a secondary account (not the `OLD` or the `NEW` account).

    MAIN ISSUE IN NEED HELP WITH:
    —————————–

    Now, I can login all day long. However, my `OLD` account, which has been changed to `NEW`, looks like a brand new user account, and all of my data and files and configuration are gone when logged in using the `NEW` account. However, in the `/home/NEW` folder, I have these files:

    Access-Your-Private-Data.desktop
    README.txt

    But no files such as:

    .ecryptfs
    .private
    …etc

    When trying to open Access-Your-Private-Data.desktop, terminal opens and closes instantly. So nothing happens. And when executing `ecryptfs-mount-private` I get the following;

    $ ecryptfs-mount-private
    ERROR: Encrypted private directory is not setup properly

    QUESTIONS:
    ———-

    – How do I access the encrypted files and move, delete or alter them?
    – Where did all of my home files and config from `OLD` user go, if all
    – I did was change the username and group name, as well as home folder
    name (and even assign user to folder), and copy everything?
    – If it’s not encrypted, where did it all go?
    – Can I keep going and get it fixed with `NEW` everything?
    – Or, Can I backtrack properly to `OLD` everything?

    I looked in `/media/OLD`, but nothing is in there.

    I looked in `/tmp` but nothing like ‘*ecryptfs.123XYZ*’ is in there except *ssh-123XYZ* and *hsperfdata_NEW*.

    This guys made it look easy on what to do with the file: http://hgoshawknest.wordpress.com/2010/04/16/how-to-recover-crypted-home-directory-in-ubuntu/

    But again, this is not working for me.

    CURRENT STEPS:
    ————–

    I am setting up a boot USB with Ubuntu 14, in hopes to follow directions on mounting properly (as in described here: http://ubuntuforums.org/showthread.php?t=1810825), but I am not sure I am working correctly.

    Thanks in advance! This is amazingly important to recover my old setup, regardless of damn username and home folder name.

    Please help with this if you can.

    All the best!!!!

    PS – Here is a list of references that helped me screw up (I mean execute) the above:

    RESOURCES:
    ———-

    1. https://www.cyberciti.biz/faq/howto-change-rename-user-name-id/
    2. http://jesin.tk/change-home-directory-in-linux/
    3. http://www.ubuntututorials.com/change-username-ubuntu-12-04/
    4. http://ubuntuforums.org/showthread.php?t=2103420
    5. http://askubuntu.com/questions/34074/how-do-i-change-my-username
    6. http://bodhizazen.net/Tutorials/Ecryptfs#Live
    7. http://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1028532
    8. http://askubuntu.com/questions/190404/changed-username-now-i-cannot-log-on-or-view-my-previous-files
    9. http://manpages.ubuntu.com/manpages/jaunty/man8/usermod.8.html

  • Keshav Agrawal Aug 25, 2014 @ 3:42

    Thanks!

  • wdm Feb 3, 2016 @ 13:32

    there is a lot of config files wich stores full path /home/olduser/…
    so you also have to go thru all and replace into /home/newuser/…

  • wdm Feb 3, 2016 @ 13:45

    or do that stuff with one command
    cd /home/newuser && find ./ -type f -readable -writable -exec sed -i “s/\/home\/olduser/\/home\/newuser/g” {} \;

  • Erick Mar 31, 2016 @ 21:07

    Very clear, as usual.Thank you Vivek

  • Darcy May 23, 2016 @ 1:52

    Perfect! Very helpful. I followed the steps to change username, group, and home folder. Worked like a charm. Thank you so much Vivek!

  • Rajeswary Jul 24, 2017 @ 9:12

    Mention killing of processes before mentioning usermod -l login-name user-name.

    It executed usermod -l, before killing processes. It was giving trouble.
    But thankfully, I reverted to previous username, killed processes and started afresh. That worked.

  • jully adan Sep 7, 2020 @ 8:37

    Nice. I like this blog.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.