You're basically asking: "How to copy settings and files from my user account to a new user account, skipping some settings?"
Migrating to a new user account
To move files from user old
to new
, you need to copy over the files and change the ownership accordingly:
sudo cp -r -d --preserve=mode,timestamps -T ~old ~new
sudo chown -R new: ~new
This should copy the files without modifying paths.
Now log in to a shell as new
. Either switch to a VTY using Ctrl + Alt + F1 and login as new
or login from a terminal using su new
. If you chose the first method, you can switch back with Ctrl + Alt + F7. From this point, it's assumed that you're logged in as new
.
If symbolic links exist which point to their old directories, find those links:
find ~ -lname '*/old/*' -ls
The file names of the symbolic links are printed, but no action has been taken. To create a new symlink ~new/path/to/symlink
pointing to ~old/point/to/target
, overwriting the old one, run:
ln -sf ~old/point/to/target ~new/path/to/symlink
There could be configuration files referring to the old ones, you can find those files with grep
:
grep -HrnI 'old' ~
If you get many results, consider being more specific, i.e. replace old
by /home/old
. Files will be listed with lines matching the search criteria, but no action is taken.
Debugging the old account
If you copy all settings and files, you're better off with removing the problematic files. For optimal results, it's a good idea to logout the subject user from a GUI session and log in a virtual console (switch to it using Ctrl + Alt + F1).
If you're suddenly being logged out, check ~/.xsession-errors
. You can do so by running:
less ~/.xsession-errors
Use arrow keys, Page Up/Down, Home or End to navigate, press Q to quit.
Sometimes the .gconfd/saved_state
file gets corrupt. You can remove this file with:
rm .gconfd/saved_state
After doing this, switch back to a GUI login by pressing Ctrl + Alt + F7. Log in and if the problem went away, you're done. Otherwise, log out and switch back to the virtual console using Ctrl + Alt + F1.
Another directory that can be emptied is ~/.cache
:
rm -r ~/.cache/*
Instead of loosing all files and settings, temporary move some folders. That can be done with:
mv folder{,-orig}
If a folder was not causing issues, remove the newly created folder and restore the old one:
rm -r folder
mv folder{-orig,}
Some folders that could cause problems (some may be nonexistent, in that case skip to the next folder):
.gnome
.gnome2
.kde
.config
.local
As with every modification, switch back to a GUI login and test it.
Best Answer
Portablejim's answer is accurate but dangerous -- if you typo something, your system may be unusable, especially if you alter the admin group improperly. If you must edit the groups file, use the
vipw -g
orvigr
commands, which verify the syntax before saving. Even then, there are better ways.From a commandline, the one you probably want to use is the following (as root):
This will remove the specified user from the specified group. You must relogin to see the effect. It will not delete the user, or the group, just the membership. There are also ways of doing it with the
usermod
command, but it's harder to use as you need to replace the entire list of groups for a user in order to remove a single group. Thegpasswd
command is also capable of doing this (as sagarchalise points out), but is mostly deprecated. As always, see the man pages for more details.