密码哈希如何在Linux上工作

十六进制密码的概念图像。
Matejmo / Getty Images

您可能知道在Linux系统上密码是散列的,并且散列存储在受限制的访问中/etc/shadow文件。但是您知道您还可以确定所使用的哈希方法,并从该文件报告密码最后更改的天数吗?

来查看用户记录/etc/shadow文件,运行如下命令:

$ sudo grep nemo /etc/shadow

你应该会看到这样一行:

尼莫:6美元FVYIIgcEcObSsUcf FsSBlV9soVt美元。Owbd4xnvhlZzjx73ZBQQBT0WM
yah6qcdnH91tBf9C4EaYbRtr7jKGETP / TwBNjyrDFqhvK0NV1:18698:7:90:7
:::

       

不管这一行有多长,它都很容易解析。这个以冒号分隔的文件存储行的前两个字段:

  • 用户名(nemo)
  • 密码哈希(包括使用的哈希方法),格式为$id$salt$哈希

这个字符串的$6$部分表示所使用的哈希算法。

  • $ 1 $意味着MD5
  • 2美元意味着河豚
  • 2 y美元意味着河豚
  • 5美元意味着sha - 256
  • 6美元意味着sha - 512

尼莫的主要部分/etc/shadow文件条目表示密码散列。下面的数字字段(18698:7:90:7:::)表示:

  • 上次修改密码的日期,格式为“自纪元以来的天数”(18698)
  • 密码修改间隔的最短天数(7天)
  • 密码修改间隔的最长天数(90)
  • 提前显示密码到期消息的天数(7)
  • 密码到期后禁用帐户的天数(上面没有设置)
  • 帐户到期日期(未在上面设置)
  • 预留字段(上面没有设置)

要在“自纪元以来的天数”形式中查找今天的日期,可以运行如下别名所示的命令,该命令将“自Unix纪元开始的秒”除以86,400(一天中的秒数)。

别名epoch_date美元= " echo $(((日期+ % s) / 86400美元))”epoch_date 18855美元

的数字字段(18698)中显示的第一个字段/etc/shadow文件并确定密码是在几天前更改的。在这个例子中,是157天前。

$ expr 18855 - 18698

属性还可以确定上次修改密码的日期恰克命令从/etc/shadow将该日期和其他密码统计数据归档并报告。

$ sudo恰克- l nemo最后密码更改:3月12日,2021密码过期:2022密码无效:3月12日,从未账户到期:从来没有密码更改之间的最小数量的天:7密码更改之间的最大天数:90天密码到期之前的警告:7

总结

/etc/shadow文件存储了Linux系统上许多重要的密码设置,包括用于创建密码哈希的算法、密码最后一集和过期日期。

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对自己最关心的话题发表评论。
相关:

版权©2021足球竞彩网下载

SD-WAN买家指南:向供应商(和您自己)提出的关键问题