这就是我希望能够做到的:
创建用户帐户后,他们应该能够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,您应该使用adduser
和usermod
。在基于 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
。