如何创建自动过期的用户帐户?

如何创建自动过期的用户帐户?

这就是我希望能够做到的:

创建用户帐户后,他们应该能够ssh进行隧道传输,但除非根用户重置倒计时,否则他们的帐户将在 30 天后自动删除。

我怎样才能自动化这个?我必须处理大约 15 个用户。

答案1

用户添加

--expiredate您可以通过使用选项来控制用户帐户的有效期useradd

useradd手册页摘录

-e, --expiredate EXPIRE_DATE
     The date on which the user account will be disabled. The date is
     specified in the format YYYY-MM-DD.

     If not specified, useradd will use the default expiry date specified
     by the EXPIRE variable in /etc/default/useradd, or an empty string 
     (no expiry) by default.

因此,在设置用户帐户时,您可以指定从现在起 30 天后的日期,并useradd在设置用户帐户时将其添加到您的命令中。

$ useradd -e 2013-07-30 someuser

查格

您还可以使用该命令更改现有帐户日期chage。要更改帐户到期日期,您需要执行以下操作:

$ chage -E 2013-08-30 someuser

计算从现在起 30 天后的日期

使用命令来做到这一点实际上非常简单date。例如:

$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013

您可以使用命令+FORMAT的选项进行格式化date,最终会给出以下内容:

$ date -d "30 days" +"%Y-%m-%d"
2013-05-28

把它们放在一起

了解了上述各部分后,这是将其组合在一起的一种方法。首先,在创建帐户时,您将运行以下命令:

$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser

然后,当您想要调整它们的到期日期时,您可以定期运行以下命令:

$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser

指定小于 24 小时的时间段

如果您希望用户仅活跃几分钟,则不能使用上述选项,因为它们需要指定日期。在这种情况下,您可以设置crontab在指定时间(例如 10 分钟)后删除/锁定创建的用户,也可以执行以下操作之一:

adduser someuser && sleep 600 && usermod --lock someuser

或者

$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes

参考

答案2

如果您使用 Debian/Ubuntu,您应该使用adduserusermod。在基于 Debian 的系统上useradd被认为是低级别的并且(根据手册页):administrators should usually use adduser(8) instead

adduser没有过期选项,因此您只需使用它来创建帐户。

usermod-e/--expiredate选项来设置到期日期。

您可以使用date以下方法计算参数:date -d "30 days" "+%Y-%m-%d"

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username

答案3

另一种方法(如果您的操作系统不支持帐户过期或此功能因任何原因不起作用):设置一个 cron 作业,从现在起运行 30 天,以锁定此帐户。

通常通过将加密密码设置为无效值来锁定帐户;在 FreeBSD 上,pw lock X命令将锁定帐户X

相关内容