删除组中的所有用户

删除组中的所有用户

在 ubuntu 中,如何使用 bash 命令行从组中删除所有用户?

该组名为 grp1,位于 /etc/group 它不关心实际组是否保留。我只想让成员消失。(该组的任何成员用户都应从 /etc/passwd 中删除)

答案1

首先,找到该组拥有的所有文件,并将它们分配给一个新组(如果您愿意的话)(可能是最好的,但不确定)

https://unix.stackexchange.com/questions/159244/find-files-belonging-to-a-group

然后通过 sed 删除该组sudo sed -i -e 's/group_to_remove/d' /etc/group

答案2

真的有那么多用户需要自动化吗?这是节省几分钟和彻底摧毁系统之间的平衡问题之一。除非我们谈论数十个用户,否则我不会自动化这个。

如果数量那么多,我建议首先生成要删除的用户列表:

grep -Po '^grp1:.*:.*:\K\w+' /etc/group > bad_users

如果还是太多,无法处理,你可以从中 grep 出来/etc/passwd,生成一个新的。

grep -vFf bad_users /etc/passwd > new_passwd

审查该内容(例如diff new_passwd /etc/passwd),如果您喜欢,请将内容移过去。根据用户数量,仍需要进行大量清理工作(主目录、假脱机等),但考虑到那里的差异,我将把这项工作留给您。

答案3

假设群组 gid 为 2000

删除主组设置为 2000 的任何用户

awk -F: "(\$4==2000) { print \$1 }" /etc/passwd | sudo xargs userdel

你们中的一些人现在看到 xargs 和 userdel 在一起可能会感到害怕:)

相关内容