Remove user from root group

Somehow I managed to add user Tom to root group in Ubuntu, in order to avoid using sudo everytime (bad decision). Now I want to remove it and I can't.

I've tried using

usermod -G {groups} Tom 

My /etc/sudoers file is the following:

Defaults        env_reset

root    ALL=(ALL) ALL

%sudo ALL=(ALL) ALL

%admin ALL=(ALL) ALL

Specifing all groups but root and no changes are made. Any idea? Thanks


Edit: this answer has been heavily edited since the original version. The original was spread over a couple of updates, so this hopefully represents those collected into a logical summary)

short version: Looking at the output you provided, I don't think you have put Tom in the root group, I think you have changed the root users primary group to Tom.

Long Version:

The output that you provided was actually the user and group information for the root user, rather than the Tom user, however it is very useful as it exposes a problem for your system;

 # id
 uid=0(root) gid=1001(Tom)    
 grupos=0(root),1001(Tom),1002(subversion),117(nagios),1004(reweb)  

This output indicates that there is a problem here which is that you have changed the root users primary group to Tom which is likely not what you had in mind uid=0(root) gid=1001(Tom); <--- this is bad. and is probably what is causing problems.

The consequence of this is that there might be loads of files around owned by group Tom like so, and these would appear in places like /var/log

rw------- 1 root Tom 332203 Feb 24 21:17 messages

This is because root creates many files for services running as root, and will create new files with the root user primary group which is now Tom. You can fix the root primary group problem with the following command;

# usermod -g root root

However this primary group problem might have had some odd effects such as leaving files everywhere in surprising places with group Tom because any files created by root will have Tom group permission.

Fixing permissions on files created with the Tom group is pretty easy if you can find them

Because of the root primary group problem mentioned above, you should fix these permissions by constructing a find / -group Tom type command to see where those files exist.

# find / -group Tom
/var/somepath/somefile.txtx
/var/somepath/somefile.txtx2

and fix those files up with something like;

chown :root /var/somepath/somefile.txtx2

if you don't care about resetting the Tom user files to root when they are outside the /home/Tom directory then you can just blast all the messed up group permissions back to root like so;

find / \( -type d -regex "/home/Tom" -prune \) -o -group Tom -print -exec chown :root {} \;

but I would look that command up before running it, in case it blatts your system....


Given what you have said, the following commands should fix both root and Tom to defaults with regards to primary groups;

make sure root has primary group root;

#usermod -g root root

make sure Tom has primary group Tom

# usermod -g Tom Tom

make sure Tom is not in the root group

# gpasswd -d Tom root
Removing user Tom from group root

make sure root is not in the Tom group

# gpasswd -d root Tom
gpasswd: unknown member root

If you wanted to prevent "Tom" from getting any admin rights, you could further check that "Tom" is not in the sudo or admin groups;

  # gpasswd -d Tom sudo
  # gpasswd -d Tom admin

You should prefer to use the vigr command to edit /etc/group. It will launch your editor on a copy of the file; when your editor exits it will do a syntax check and only replace /etc/group if the new file checks out.

There's a corresponding vipw command for editing /etc/passwd too.


Try removing him manually by editing /etc/group

There's a comma separated list of users in each group.

Not sure this follows best-practice, but it works.