如何创建在固定期限后自动过期的linux用户

如何创建在固定期限后自动过期的linux用户

我创建了一个 PHP 应用程序,可以创建新的 Linux 用户帐户,并在几个时期后自动过期。

在 Google 上搜索“如何在修复 periode 后自动删除 linux 用户”后,我找到了这个答案,https://unix.stackexchange.com/a/80971/224583

但我不知道如何制作,例如创建新帐户并在10个月或5个月后过期等。

我的问题是,如何将月转换为日,例如我给出 5 个月并转换 5 个月的天数。或者除了我的问题之外还有其他解决方案吗?

答案1

该实用程序中的过期选项useradd需要以格式指定日期YYYY-MM-DD

您可以使用命令-d的选项来计算该日期date。使用您的 5 个月场景示例:

$ date +"%Y-%m-%d"
2017-04-08
$ date -d "5 months" +"%Y-%m-%d"
2017-09-08

答案2

-e的开关需要useradd国际日期格式 ( ) 的日期YYYY-MM-DD,可以从其手册页中获取:

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

您现在只需说明帐户的到期日期即可。您可以在 PHP 中进行此计算。您链接到的答案是使用标准命令行工具来完成的,因此不必使用高级语言。

以下是如何在 PHP 中执行此操作的示例代码:

$diffHour = 0;
$diffMinute = 0;
$diffSecond = 0;
$diffMonth = 10;
$diffDay = 0;
$diffYear = 0;

$hour = date("H") + $diffHour;
$minute = date("i") + $diffMinute;
$second = date("s") + $diffSecond;
$month = date("n") + $diffMonth;
$day = date("j") + $diffDay;
$year = date("Y") + $diffYear;

$time = mktime($hour, $minute, $second, $month, $day, $year);

$date = date("Y-m-d", $time);

只需填写最顶部块中的变量即可。我填写了您 10 个月的示例。你也可以回到过去。例如,如果您希望其在 7 个月减 4 天后到期,您可以设置$diffMonth = 7;$diffDay = -4;

然后,将日期值(2018-02-09今天运行时(除非您住在美国,那么日期会早一天,因为我们仍在使用带有时区的延迟时间系统))传递给您的 bash 脚本。

示例 bash 代码:

useradd -e "2018-02-09" "rizal"

相关内容