Some time ago, when I installed Ubuntu, I chose a rather stupid username for my account that I do not want to use anymore.
How do I change this (including the name of my home directory, and the name in the terminal) without losing settings for applications?
How do I keep permissions and my keys for various authentification (e.g. email, SSH, GPG and more)?
What settings could possibly get lost if I changed my username?
Best Answer
Unix-like operating systems decouple the user name from the user identity, so you may safely change the name without affecting the ID. All permissions, files, etc are tied to your identity (uid), not your username.
To manage every aspect of the user database, you use the
usermod
tool.To change username (it is probably best to do this without being logged in):
This however, doesn't rename the home folder.
To change home-folder, use
after you changed the username.
For instance, you could logout, drop to a console (Ctrl+Alt+F1), and
sudo su -
to become true root (as opposed tosudo -s
, where $HOME is still /home/yourname.) Maybe you also have to kill some still running processes from this user first. To do so, enterps -u username
, look for the matching PID and kill them bykill PID-number
.Update: as arrange mentioned, some files may reference your old home directory. You can either keep a symlink for backward compatibility, e g
ln -s /home/newname /home/oldname
or you can change the file contents withsed -i.bak 's/*oldname*/*newname*/g' *list of files*
It creates a backup for each file with a .bak extension.Some additional information for not so experienced users like me:
As I only have ONE user account (administrator), it would not let me change the username ("you are already logged in" was the response in TTY1 (Ctrl+Alt+F1). To get around this:
Login with your old credentials and add a new user, e.g. "temporary" in TTY1:
set the password.
Allow the temporary user to run sudo by adding the user to sudo group:
exit
.exit
(until you get the login prompt)Delete temporary user and folder: