我正在阅读更多关于linux 上密码是如何存储的 并发现必须更改密码的天数。我正在读的文章说
The number of days after which password must be changed
(99999 indicates user can keep his or her password
unchanged for many, many years)]
99999天大约是277年。我想知道在2250年是否会出现另一种千禧年的情况,人们使用shadow格式的*nix机器将无法登录。有没有办法将此日期设置为无穷大。这似乎是一个非常糟糕的设计决定......
答案1
是的,这将是密码年龄的问题,但不用担心之前会出现更大的问题。 2038 年对于 unixtimestamp 来说将是一个问题。
从 1970 年 1 月 1 日开始计算为有符号 32 位整数的时间值将无法对 2038 年 1 月 19 日之后的时间进行编码。
答案2
问题是什么?。
这是不是固定日期,与上次更改有所不同。 99999天意味着连续使用约273年后上次更改(或最初设置)密码的时间。
上次更改密码的时间与 UNIX 时间有关。 A32 位有符号秒值从January 1, 1970
。现在这是 UNIX 时间的默认计数器。这样,UNIX 时间就需要在 2038 年(大约)溢出之前进行更改(~2038 年 1 月 19 日)。自从 OpenBSD、NetBSD 和x32 ABI对于已经使用 64 位的 Linux time_t
,预计到 2038 年似乎是合理的有符号的 64 位将是默认计数器。这将允许继续计算大约 292 giga 的额外年份,或者如 NTP 部分中所述:
64 位秒值足以提供明确的时间表示,直到宇宙变暗。
“上次更改密码的时间”就是 UNIX 时间除以 24 小时 60 分 60 秒。今天,它将是:
$ echo $(( $(date +%s) / 24 / 60 / 60 ))
16837
这比 UNIX 时间减少了大约 16 位 ( 2^16=65536 )。
简而言之,让您的应用程序能够使用 64 位 UNIX 计数器,等等:
What is the problem?
答案3
如果你认为当今的任何操作系统都将在 2250 年左右出现,没有任何重大变化,从而减轻潜在的问题,那么我们面临的问题不仅仅是愚蠢的密码过期问题。看看自 ENIAC 发明以来的过去 70 多年里,计算机出现了哪些情况。从这些角度来看,未来 230 多年几乎是无限的。