从根组中删除用户

不知何故,我设法将用户汤姆添加到Ubuntu的组,以避免每次使用sudo(坏的决定)。 现在我想删除它,我不能。

我试过使用

usermod -G {groups} Tom 

我的/ etc / sudoers文件如下:

 Defaults env_reset root ALL=(ALL) ALL %sudo ALL=(ALL) ALL %admin ALL=(ALL) ALL 

指定所有的组,但根和没有改变。 任何想法? 谢谢

编辑:这个答案已经从原来的版本大量编辑。 原来是传播了几个更新,所以这有希望代表那些收集到一个逻辑总结)

简短的版本 :看看你提供的输出,我不认为你已经把汤姆放在根组,我认为你已经改变了根用户的主要组汤姆。

长版本:

您提供的输出实际上是root用户的用户和组信息,而不是Tom用户,但是它非常有用,因为它暴露了系统的问题;

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

这个输出表明这里有一个问题,那就是你已经把根用户的主要组更改为Tom ,这可能不是你想到的那个uid=0(root) gid=1001(Tom) ; <—这很糟糕。 可能是什么导致问题。

这样做的结果是,可能会有大量Tom拥有的文件,像这样,这些文件会出现在/ var / log

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

这是因为root为以root用户身份运行的服务创build了许多文件,并将使用现在是Tom的root用户主要组创build新文件。 您可以使用以下命令修复根主要组问题;

# usermod -g root root

然而, 这个主要的组问题可能会有一些奇怪的效果,例如在组Tom中令人惊讶的地方将文件留在任何地方,因为任何由root创build的文件都将具有Tom组权限。

修复Tom组创build的文件的权限是非常容易的,如果你能find它们

由于上面提到的根主组问题,您应该通过构buildfind / -group Tom type命令来修复这些权限,以查看这些文件存在的位置。

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

并用类似的东西修复这些文件;

chown :root /var/somepath/somefile.txtx2

如果你不关心在/ home / Tom目录之外将Tom用户文件重置为root,那么你可以将所有搞砸的组权限都重新设置为root。

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

但是我会在运行之前查看这个命令,以防止系统瘫痪。


考虑到你所说的话,下面的命令应该修复root和Tom到主组的默认值;

确保root拥有主群组root;

 #usermod -g root root 

确保汤姆有主要组织汤姆

 # usermod -g Tom Tom 

确保Tom不在根组中

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

确保root不在Tom组中

 # gpasswd -d root Tom gpasswd: unknown member root 

如果您想阻止“Tom”获得任何pipe理权限,则可以进一步检查“Tom”不在sudo或admin组中;

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

您应该更喜欢使用vigr命令来编辑/etc/group 。 它会启动你的编辑器的文件的副本; 当你的编辑器退出时,它将进行语法检查,只有在新文件检出时才会replace/etc/group

还有一个用于编辑/etc/passwd的相应vipw命令。

尝试通过编辑/ etc / group手动删除他

每个组中都有逗号分隔的用户列表。

不确定这是否遵循最佳做法,但它的工作原理。