从 root 组中删除用户

从 root 组中删除用户

不知怎的,我设法将用户 Tom 添加到 Ubuntu 中的 root 组,以避免每次都使用 sudo(错误的决定)。现在我想删除它,但我做不到。

我试过使用

usermod -G {groups} Tom 

我的 /etc/sudoers 文件如下:

Defaults        env_reset

root    ALL=(ALL) ALL

%sudo ALL=(ALL) ALL

%admin ALL=(ALL) ALL

指定除 root 之外的所有组,不做任何更改。有什么想法吗?谢谢

答案1

编辑:这个答案自原始版本以来经过了大量编辑。原始版本分布在几次更新中,因此希望这些更新能够代表收集到的逻辑摘要)

简洁版本:查看您提供的输出,我认为您没有将 Tom 放入根组中,我认为您已将根用户的主要组更改为 Tom。

长版本:

您提供的输出实际上是 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 身份运行的服务创建许多文件,并且会以 root 用户主组创建新文件现在是汤姆。您可以使用以下命令修复根主组问题;

# usermod -g root root

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

修复 Tom 组创建的文件的权限如果你能找到它们就很容易了

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

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

并使用类似如下方法修复这些文件;

chown :root /var/somepath/somefile.txtx2

如果您不介意在 Tom 用户文件位于 /home/Tom 目录之外时将其重置为 root 用户,那么您可以将所有混乱的组权限重新设置为 root 用户,如下所示;

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

但我会在运行它之前查找该命令,以防它破坏你的系统......


根据您所说的内容,以下命令应该将 root 和 Tom 都修复为与主要组相关的默认值;

确保根具有主组根;

#usermod -g root root

确保 Tom 拥有主要群组 Tom

# usermod -g Tom Tom

确保 Tom 不在 root 组中

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

确保 root 不在 Tom 组中

# gpasswd -d root Tom
gpasswd: unknown member root

如果你想阻止“汤姆”任何管理员权限,您可以进一步检查“Tom”不在 sudo 或 admin 组中;

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

答案2

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

也有相应的vipw编辑命令/etc/passwd

答案3

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

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

不确定这是否符合最佳实践,但它有效。

相关内容