/etc/shadow 上次密码更改的日期 — UTC 时间还是当地时间?

/etc/shadow 上次密码更改的日期 — UTC 时间还是当地时间?

man 5 shadow给出每行第三个字段的描述:

上次更改密码的日期,表示为自 1970 年 1 月 1 日以来的天数。

值0有特殊含义,即用户下次登录系统时应更改密码。

空字段表示密码时效功能已禁用。

这是指 UTC 时间还是当地时区时间?特别是,如果我想使用类似的方法计算可比较的数字$(( $(date +%s) / 86400 )),我是否需要传递date-u选项?

答案1

在大多数用法中,“自 1970 年以来的秒数”时间戳被专门定义为 UTC。特别是,您可能会注意到date +%s给出的结果与 相同date -u +%s

在影子密码实用程序中设置的相关行是“

nsp->sp_lstchg = (long) time ((time_t *) 0) / SCALE;

这将使其成为 UTC。 SCALE 被定义为 86400(除了通过特定的 ifdef,我无法完全追踪是什么情况导致定义的)

答案2

“天”表示 86,400 秒间隔。 “1970 年 1 月 1 日”表示 00:00:00 UTC。这基本上是标准的UNIX时间,也称为 POSIX 时间。

相关内容