删除组中的所有用户

删除组中的所有用户

我搜索干净的方式删除“sudo”组中的所有用户。在安装过程中创建的多个发行版上,用户拥有 sudo 权限,我不希望这样。我寻找一种适用于(几乎)所有情况的自动化方法。

基本上,我想清空一个组。

要删除每个用户:GROUP=my_group; for u in $(getent group $GROUP | sed -e 's/^.*:.*:.*://' -e 's/,/ /g'); do echo gpasswd --delete $u $GROUP; done
此命令行有效:
1. 如果该组不存在
2. 如果该组为空
3. 如果该组包含一个用户
4. 如果该组包含多个用户
所以一切正常。但他们的东西更简单吗?

另一种方法是删除该组,然后重新创建它。丑陋的 ?

答案1

一般来说,您不应删除某个组,因为某些文件可能属于该组,但它可能足以满足您的特定 sudo 用例。

更一般的用例是使用gpasswd (1)at 它允许您设置特定组的成员,因此运行以下命令就足够了:

gpasswd sudo -M ''

要仅在组 sudo 存在时运行此命令,您可以将其与 getent 调用结合起来,即:

getent group sudo && gpasswd sudo -M ''

答案2

在具有此命令的系统上还有另一种使用命令/usr/sbin/groupmems(“管理用户主要组的成员”)的方法:

groupmems --purge --group <group_to_clean>

或使用短选项:

groupmems -p -g <group_to_clean>

所有成员都将从群组中删除。

在 CentOS 和 Fedora 中测试。

相关内容