不知怎的,我设法将用户 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 Tom
type 命令来查看这些文件存在的位置,以修复这些权限。
# 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 手动删除他
每个组中都有一个以逗号分隔的用户列表。
不确定这是否符合最佳实践,但它有效。