如何将用户从群组中移除?

我将一个用户账户添加到了“admin”组,但发现我添加了错误的用户。所以现在我需要将该账户从“admin”组中移除。
如何在不删除用户的情况下从组中移除一个账户?
4个回答

Portablejim的回答是准确的,但也很危险——如果你打错了什么东西,你的系统可能就无法使用了,尤其是如果你不正确地修改了管理员组。如果你必须编辑组文件,请使用vipw -g或vigr命令,在保存之前验证语法。即使如此,还有更好的方法。
从命令行来看,你可能想使用以下命令(作为root用户):
deluser <username> <groupname>

这将从指定的组中移除指定的用户。您必须重新登录以查看效果。它不会删除用户或组,只会删除成员资格。还有一种使用usermod命令来完成此操作的方法,但它更难使用,因为您需要替换用户的整个组列表才能删除单个组。gpasswd命令也可以做到这一点(正如sagarchalise所指出的),但它已经基本被弃用。如常,详细信息请参阅手册页。

13gpasswd并没有被弃用。它的主要目的是管理/etc/group和/etc/gshadow文件。此外,虽然您提到的方法确实可行,并且在deluser手册中也有提到,但这种方法有一定的风险。如果您在输入组名之前不小心按下回车键,就会删除用户。最好希望您记得其UID,以便能够快速添加回来。使用专为此目的设计的gpasswd会更安全。 - Starfish
1我也考虑过这个风险。我猜你可以在命令前加上一个“#”,然后按回车键,然后再删除第一个字符重新运行它。 - ezequiel-garzon
您需要重新登录以查看效果。或者您可以直接输入命令:'cat /etc/group'。 - josh.thomson
1我在查找Ubuntu 18的man页面时发现了“deluser”,但是man页面的第一行说明:“从系统中删除用户或组”,因此我继续搜索。显然,这个man页面需要用更好的措辞来表达。 - tim.rohrer
我在一篇文章中找到了这个答案,立刻就感觉毛骨悚然。我不知道为什么有这么多人喜欢并接受这个答案,但在我看来,它是危险的,尤其是作为根用户。安东尼·乔治根的回答才是正确的解决方案,正如Starfish所说的那样。 - user383919
1我真的不喜欢这个回答,它以“Portablejim的回答准确但危险”开头,然后将deluser作为解决方案,而忽略第二个参数会立即删除用户。在我看来,“gpasswd”的回答要好得多。 - Marcus K.


5gpasswd的一个优点是它更加跨平台,也适用于基于Red Hat的发行版。 - Anthony Geoghegan
2这是正确的答案。如果它能够脱颖而出就好了。 - user383919
1你能编辑一下你的回答,解释一下-d标志是做什么用的吗?(不管怎样,我已经投票选为最佳答案了!谢谢!) - Aerendir
错误地得到 gpasswd: 用户 'me' 不是 'me_group' 的成员 - Gulzar

最简单和最安全的方法:
sudo -H gedit /etc/group

然后手动删除它。


我看到这个条目。ssh:x:118: 这里的数字 118 是什么意思? - ankit7540
4绝对不是最安全的方式! - callmebob
这对我有用,我把用户从组中移除了,然后一切都顺利进行。 - Ciasto piekarz

请参考zanfur的答案。
以root身份编辑/etc/group文件(即gksudo gedit /etc/group),并从以'admin'开头的行中删除用户名。
例如:
...
admin:x:120:adminuser,adminuser2,userthatshouldnotbeadmin
...

变成

...
admin:x:120:adminuser,adminuser2
...

警告,文件中的拼写错误可能会损坏您的系统。

15请不要建议手动编辑这些系统文件。如果你搞砸了,你的系统可能会变得无法访问。 - gertvdijk
或者至少先备份它们。相关信息 - Eliah Kagan
4我认为你应该发布这个,因为它提供了有关Linux工作原理的宝贵见解。然而,你应该加上一个警告,说明有一种更安全的方法。 - Freedom_Ben