我的任务是删除离职员工的本地 *nix 帐户。在几乎所有情况下,userdel -r <username>
它都运行良好。但是,在少数情况下,相关用户在之前被不干净地删除,导致其帐户不存在,但在 /etc/group 文件和主目录中存在。当我接到从系统中删除其用户的任务时,我发现该用户不存在,但我仍然需要删除这些残余。在这种情况下,userdel -r <username>
打印userdel: user '<username>' does not exist
、孤立的组条目、邮件假脱机、主目录等不会被删除。
我可以自己编写一个脚本来检查主页、群组和邮件假脱机,但如果存在的话,我更愿意使用现有的实用程序。该实用程序可以是 shell 命令或 Ansible 模块。
我得到了要清除的用户名,可以假设这是正确的,尽管不区分大小写会是一个加分项。如果有一种安全的方法来查找和更正所有不存在的用户而无需输入,那就更好了,因为它可以让我免于重新完成以前的任务。
答案1
我的理解是你需要从所有次要组中删除该用户使用核心实用程序(在 userdel 之上)
usermod -G "" <username> && userdel -r <username>
您可以将其作为功能添加到您的~/.bash_aliases
或~/.bashrc
以便更快地使用
nukeusr() {
usermod -G \"\" $1 && userdel -r $1
}
然后nukeusr <username>
从组中删除该用户。