0
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 日以来经过的秒数表示

有人可以帮我理解这一点。

4

2 回答 2

2

man 5 shadow在 Linux 机器上 说:

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

因此,您可以在 24 小时内通过将该值乘以/etc/shadow86400(一天中的秒数 - 但您不需要我告诉您,是吗?)来找出密码更改的时间。

对于给定的值(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)报告”,而不是在我的时区。

于 2012-12-10T22:14:07.763 回答
1

"epoch" 值 in /etc/shadow= 15684

24 小时内的秒数(因为通常 "epoch" 值以秒为单位显示,但出于某种原因(可能是为了制作紧凑视图)在/etc/shadow文件中 "epoch" 值以天显示,而不是) = 24 * 60 * 60 = 86400

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

之后,或者使用Epoch Converter通过复制/粘贴最终结果,您可以获得日期,
或者
只是date --date @$(( 15684 * 86400 ))在 cli 中使用命令

于 2020-07-06T13:39:54.950 回答