我搜索干净的方式删除“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 中测试。