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


20

这是我想要做的:

创建用户帐户后,他们应该可以ssh-tunnel,但是30天后他们的帐户会自动删除,除非root用户重置了倒计时。

我该如何自动化?我将要处理大约15位用户。

Answers:


29

用户添加

您可以使用的--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

ge

您还可以使用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小时的时间段

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

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

要么

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

参考文献


3
我自由地将%M(分钟)更改为%m(月)
Anthon 2013年

5

如果您使用的是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

1

另一种方法(如果您的操作系统不支持帐户到期或该功能由于任何原因而无法使用):设置一个cron作业,从现在开始运行30天,它将锁定该帐户。

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


1
说明如何锁定帐户。
slm

确实,这取决于操作系统。
sendmoreinfo 2013年

4
如果您举一个显示它的示例,它仍然会有所帮助。
slm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.