≡ Menu

Linux Change or Rename User Name and UID (user-id)

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

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.

Syntax

Tutorial details
DifficultyEasy (rss)
Root privilegesYes
RequirementsNone
Estimated completion time5m

The syntax is as follows to rename by user name:
usermod -l login-name old-name

Where,

  • The name of the user will be changed from 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.

Examples

Let us see how to rename user login. First, make sure user 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.

Task: View current user and group memebership for user named tom

The syntax is as follows:

# get tom ids 
id tom
# see login info
grep ^tom: /etc/passwd
# see group info
grep ^tom: /etc/group
# See home dir permissions
ls -ld /home/tom/
# See process owned by tom user/group
ps aux | grep tom
ps -u tom
 

Sample outputs:

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

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

Task: Change username from tom to jerry

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 process owned by tom user and forcefully logged him out of the system:

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

Task: Change primary groupname from tom to jerry

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

Sample outputs:

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

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

Task: User home directory from /home/tom/ to /home/jerry

The syntax is:
# 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/

Task: Change user tom UID from 5001 to 10000

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

Read man pages of usermod(8) and groupmod(8) commands for more information.

Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

{ 56 comments… add one }

  • Joe P. November 17, 2007, 9:10 pm

    gave me exactly what I was looking for. Thanks.

    • balaji March 4, 2011, 2:17 pm

      how to change the user name in linux

      • Nageswararao December 13, 2013, 1:03 pm

        To change user name in linux just type the command (usermod -l Newname Oldname)

  • rxfelix February 12, 2008, 6:51 pm

    You might want to mention the possible additional tasks required to make a complete username changeover, such as changing the home directory name, the mail spool file name, or the group names. Otherwise an unexperienced sysadmin might use this command but break the user’s mail or other services.

  • ubuntu April 22, 2008, 3:16 am

    killall -u old
    id old
    usermod -l new old
    groupmod -n new old
    usermod -d /home/new -m new
    usermod -c “New Real Name” new
    id new

    • Asif syed March 8, 2011, 4:51 pm

      man usermod – we can view all details about user modifications and Changes.
      /etc/passwd – we can view all user ang group accounts, timestamps , bash.
      usermod -l new old – to change the user name
      usermod -d /home/new – to change the home directory
      usermod -c – to change the jickos..,field..

    • Skibbler May 6, 2013, 6:01 pm

      Just what I needed. Thanks.

  • Sys Admin June 7, 2008, 11:00 am

    As with any potentially dangerous operation, you should back up the user’s data before the migration.

    This will allow you to recover from the situation should the problem arise.

  • johncruise June 8, 2008, 9:16 pm

    very useful. thanks!

  • kamal January 6, 2009, 11:00 am

    open Suse
    chenge username

    usermod -l new old

  • hassan March 19, 2009, 5:10 am

    Can we creat a user with the root permissions? if yes please explain how?

    • kunal October 30, 2012, 11:07 am

      usermod -u 0 username

  • hassan March 19, 2009, 5:12 am

    Can we creat a user with the root permissions? if yes please explain how?
    I know root has 0 UID but when i try to assign 0 to any other user it gives me message that id is not unique.

  • Jo July 3, 2009, 12:31 am

    This tips is awesome!!!
    Thanks

  • Tamika crockrum July 5, 2009, 11:46 pm

    Great ideal huh

  • dan July 10, 2009, 5:42 pm

    How to give a user root privileges:
    1. open terminal and type “visudo” or “sudo visudo” (you need root privileges)
    2. find the line “root ALL=(ALL) ALL ”
    3. under that line copy the “root ALL…” line but replace root with your username
    example. “dan ALL=(ALL) ALL”
    4. make sure you don’t remove any lines in that file
    5. If you don’t want to use the visudo command, you could just use a text editor and edit the /etc/sudoers file.

    Hope that was helpful
    -dan

    • JuR June 14, 2011, 8:29 pm

      Thank you for that,
      but could you help me with saving the file? When I’m on terminal and have written all the needed modifications, how do I save and exit?

      Cheers

      • Aaron July 2, 2011, 3:58 pm

        the editor you are using during that operation is vim

  • dan July 10, 2009, 5:48 pm

    oh also, instead of adding a line in that file you could uncomment the line that starts with #%admin

    so it looks like %admin ALL=(ALL) ALL
    then save it
    add any users to the admin group to give them admin privileges

    same thing can be done for the”%sudo” line (although im not sure about it”

  • omar July 17, 2009, 2:37 pm

    to change the login for ubuntu 9.04 I used:
    # sudo usermod -l

  • Ruben September 29, 2009, 9:33 pm

    How do yo rename an account in unix sun Solaris 10

  • paula Ojukwu October 6, 2009, 9:37 pm

    ok mine challenge is different.i want to change from root to a user name.
    i have tried all i know how.
    please some one help me.

  • lavanya November 25, 2009, 5:06 am

    change id

  • Jacques November 29, 2009, 12:29 pm

    As I recall, usermod only updates UIDs for files in the user’s home directory and the mail spool. You also have to consider files in /tmp or /var that can be persistent between user sessions, or even reboots depending on your OS. I just do this to ensure that all files have been changed,

    find / -user 5001 -exec chown -h 10000 {} \;

    or maybe this,

    find / -user 5001 | xargs chown -h 10000

    Use the ‘-h’ switch to chown so that it updates the ownership of symbolic links rather than what the symlink points to.

    • mrom August 20, 2010, 10:12 am

      good hint! but i would rather use:

      # find / -user 5001 -print0 | xargs -0 chown -h 10000

      this handles files with spaces, backslashs or quotation marks correctly.

  • soundar January 28, 2010, 3:11 pm

    hi
    to create user with non-unique UID
    useradd -g groupname -o -u UID newusername
    ie : useradd -g root -o -u 0 soundar

    • Anonymous May 7, 2010, 11:15 am

      Thank you! That works great!!

  • sayantan February 19, 2010, 5:48 am

    its leads to a gconf error on rhel 5.

  • kiran March 26, 2010, 11:32 am

    # useradd -g root -o -u 0 postgres
    UX: useradd: ERROR: Inconsistent password files. See pwconv(1M).

  • kiran March 26, 2010, 11:33 am

    # uname -a
    SunOS hyd-BNW 5.10 Generic_139555-08 sun4u sparc SUNW,Sun-Fire-V240

  • Aldo "xoen" Giambelluca May 2, 2010, 7:44 am

    Maybe you saved my life :P, thank you :).

  • Dating in Ireland May 3, 2010, 6:04 pm

    Exactly what I was looking for.
    Thanks!

  • jseamus June 5, 2010, 9:17 pm

    In Ubuntu 10.04, when I tried it, it returned this:

    $ sudo usermod -l new old
    usermod: user old is currently logged in

    This happened even when I was changing “old” to “new” from a different user account while “old” was logged out.

    Any help please?

    • Alex October 14, 2011, 2:24 pm

      If you receive the error “usermod: user is currently logged in”, this is probably because you’re trying to change a username while their account is being used by one or more processes.

      Getting around this problem is usually pretty straightforward:

      – create a new user, e.g. I created an “admin” user, with root privileges
      – restart your machine and log in as them (this is the best way to ensure no processes continue to run as the user whose name you want to change)
      – retry the command (don’t forget you will probably need to run it with sudo, e.g. “sudo usermod -l “)

    • arr_sea July 24, 2013, 6:42 pm

      One way around this is the following:
      First we become root, then we execute a command via nohup that will wait 30 seconds and then call the usermod command. Then log out of root and log out of your user account, and wait 1 minute. Then you should be able to log back in as your new user name.

      $ sudo su
      # nohup /bin/bash -c ‘sleep 30; usermod -l new_user_name -md /home/new_user_name old_user_name; touch ~/done.tmp’ &
      # exit
      $ exit
      and do whatever else you need to do to log out…

  • recluce June 14, 2010, 2:11 am

    It seems that you must restart your system in Ubuntu 10.04, login to the different user account and do the changes. Once you were logged in to the account to be changed, it will not work anymore. No idea why.

    BTW: if you use WINE, look at the .reg files of WINE and change your /home folder name accordingly – or you will seriously bork Wine!

  • pev January 4, 2011, 6:13 am

    Wow just what I was looking for thanks.

    Just remember to change the owner’s group (gid) as well (run this after the uid change)

    # find / -group 5001 -print0 | xargs -0 chown -h :10000

  • matias February 24, 2011, 10:01 am

    “$ sudo usermod -l new old
    usermod: user old is currently logged in”
    I killed all his tasks. It works.

  • Tim March 9, 2011, 9:25 am

    What’s the terminal file in unix ?
    Does the terminal files created when a use log in ?

  • suresh August 10, 2011, 1:41 pm

    when iam changing username from root in linux with usermod -l [new username] [old username] it geting that user currently logged in

  • nt September 14, 2011, 6:43 pm

    I want creat a user have id = 0. how can I do it??
    when I delete dir home of user I can’t login this user. Why?

  • naresh November 12, 2011, 6:11 am

    precise & useful

  • gnb November 16, 2011, 9:45 am

    will this work if my home drive (corresponding to the USR-NAME being changed) is encrypted? I am a bit afraid. Can you reply on this please! Thanks in advance — GNB

  • quick December 30, 2011, 10:51 pm

    guys, I made a adjustment in sudoers file and deleted the % in the group section. afterwards i cannt access the sudoers file anymore.
    error my user do not have the permission to access.
    can someone help
    ubuntu 10.11

  • Raju May 1, 2012, 2:43 pm

    I want to rename the username in particular file.
    example: demo.xml
    can some one help me

  • sharmila September 3, 2012, 10:13 am

    how to change the username..I don’t no old username….

  • Gopal October 21, 2012, 2:02 pm

    A system has an existing user kkline for Kathy Kline but she just got married and is now Kathy Morgan. You need to change her username, home directory name, and real name on the system. What command(s) would you use?

    please provide the solution

  • Richard October 30, 2012, 7:29 pm

    Amazing response. That guided me through perfectly with just what i needed. Best strait to the point response! Thank you!

  • Rafi November 1, 2012, 6:07 am

    When i change the user name then automaticaly change the group name also. I just only change the user name. How can i do that?

    • kunal November 1, 2012, 6:42 am

      After user created you can add group and execute below command

      # groupadd goupname
      # chown groupname:groupname DIRname -R

  • Dustin Brown June 21, 2013, 4:30 pm

    Ok, I changed my username and now i can’t ssh into said user from another machine. Why? Ssh says permission denied. Here is id fgsim
    uid=1004(fgsim) gid=1004(fgsim) groups=1004(fgsim),1008(fgstudents)
    I edited both the passwd and group file.
    I use Fedora 16.

  • Mark February 21, 2014, 5:52 pm

    Did you also edit /etc/shadow and /etc/gshadow?

  • Mark February 21, 2014, 5:54 pm

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

  • jooe15 March 26, 2014, 7:30 pm

    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 June 19, 2014, 6:58 pm

    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: http://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. http://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 August 25, 2014, 3:42 am

    Thanks!

Leave a Comment