如何在固定时间后自动删除Linux用户?

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

我知道你可以使用useradd命令设置过期时间,但是我不知道如何在到期时删除用户及其相关文件。

是否有捷径可寻?

谢谢!

假设你有一个用户创build脚本来设置$ username,添加这个:

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

当它被添加时,在帐户上设置到期也是值得的,作为额外的保险。

如果您在设置帐户后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 ) 

运行时,它读取影子文件并select设置了过期date的帐户。 对于每个选定的帐户,如果现在晚于到期时间,它就会出现。 如果是这样,删除帐户。

在testing之前确保你有备份。

大概一个好主意是使用包含用户名的crontab +文件的混合来删除? 用必要的date划分该文件,或者运行一个cron作业来查找过期的用户并删除它们。 一个简单的shell脚本可以做到这一点。

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