Linux如何验证登录密码?

An *_*ser 5 linux password shadow

我想知道Linux中的密码验证是如何工作的。

我知道密码以散列形式存储在/etc/shadow文件中,用户信息在/etc/passwd文件中。我的理解是这样的:

  1. 选择您要登录的用户决定了系统应该检查的用户名。
  2. 当您输入密码并按回车键时,系统会转到该/etc/shadow文件并找到与用户名对应的行。
  3. 从第 2 步,它获取实际密码的哈希值。然后它生成输入密码的哈希值并比较它们。如果找到匹配项,瞧。否则,错误消息。

我的理解正确吗?

Wil*_*xao 6

是的。你是对的。每个步骤也可以拆分为小任务,但您描述了整体算法。

遵循几篇详细描述登录过程的文章。[1] [2]

请注意,这只是关于普通密码,而不是 PAM 系统。[3]