如何在固定期限后自动删除 Linux 用户?

如何在固定期限后自动删除 Linux 用户?

我有一个以编程方式创建用户的脚本,但我们想在 48 小时后删除用户及其拥有的任何文件。

我知道您可以使用 useradd 命令设置到期时间,但我不知道如何在到期时执行下一步删除用户及其关联文件。

是否有捷径可寻?

谢谢你!

答案1

假设您有一个设置 $username 的用户创建脚本,请添加以下内容:

cat <<EOF | at now + 2 days
userdel -f -r $username
EOF

在添加账户时设置有效期也是值得的,作为额外的保险。

答案2

如果您设置帐户在设置后 2 天过期,那么下面的脚本应该会有所帮助。

#!/bin/bash
#
nowsecs=$( date +%s )

while read account
do
    username=$( echo $account | cut -d: -f1  )
    expiredays=$( echo $account | cut -d: -f2 )
    expiresecs=$(( $expiredays * 86400 ))
    if [ $expiresecs -le $nowsecs ]
    then
        echo "$username has expired deleting"
        userdel -r "$username"
    fi
done < <( cut -d: -f1,8 /etc/shadow | sed /:$/d )

运行时,它会读取影子文件并选择设置了到期日期的帐户。对于每个选定的帐户,它会确定现在是否晚于到期时间。如果是,它会删除该帐户。

测试之前请确保您有备份。

答案3

一个好主意可能是使用 crontab + 包含要删除的用户名的文件的组合?也许用必要的日期来分隔该文件,或者运行一个 cron 作业来查找过期的用户并将其删除。一个简单的 shell 脚本就可以做到这一点。

答案4

如果您已将其标记为“已过期”,则可以尝试使用 cron 任务来安排每日、每小时或每周的帐户清理。您只需创建一个脚本,就像您为创建用户编写的脚本一样,但用于检测过期并删除您需要的任何内容。确保它以 root 身份运行。

相关内容