如何在影子文件中将密码有效期设置为无限?

如何在影子文件中将密码有效期设置为无限?

我正在阅读更多关于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 多年几乎是无限的。

相关内容