了解在unix中计算密码老化的纪元时间

时间:2012-12-10 21:15:56

标签: unix unix-timestamp epoch

my_current_epoch=15684 equivalent time stamp is  Thu, 01 Jan 1970 04:21:24
last_password_reset_epoch_time=15547 equivalent time stamp is Thu, 01 Jan 1970 04:19:07

我无法理解这两者之间的差异将给上次密码重设后的日期。

根据我的理解,纪元时间用自1970年1月1日起的秒数表示

有人可以帮我理解这个。

2 个答案:

答案 0 :(得分:2)

Linux框上的

man 5 shadow说:

  

上次更改密码的日期是自1970年1月1日以来的天数。密码可能不是   再次更改,直到经过适当的天数,并且必须在最大数量后更改   天。如果所需的最小天数大于允许的最大天数,则为此   用户不得更改密码。

因此,您可以通过将/etc/shadow的值乘以86400(一天中的秒数 - 但您不需要我告诉您,是吗?)。

对于给定的值(bc救援):

  • 15684*86400 = 1355097600
  • 15547*86400 = 1343260800

$ timestamp -u 1355097600 1343260800
1355097600 = Mon Dec 10 00:00:00 2012
1343260800 = Thu Jul 26 00:00:00 2012
$

时间戳是我的计划;现代版本的date也可以处理这个问题。 -u表示“UTC(也称为GMT)报告”而不是我的时区。

答案 1 :(得分:1)

/etc/shadow中的“ epoch”值= 15684

24小时内的秒数(通常是因为“ epoch”值以秒为单位显示,但出于某种原因(也许是为了使视图简洁),/etc/shadow文件中的“ epoch”值以天数显示,而不是以 seconds )= 24 * 60 * 60 = 86400

然后将这两个数字相乘:15684()x 86400(每天的秒数);我们将得到号码1355097600。

然后,使用Epoch Converter复制/粘贴最终结果,即可获取日期

只需在cli中使用date --date @$(( 15684 * 86400 ))命令