我的 Linux 密码存储在系统的哪里?我如何检索它?

我的 Linux 密码存储在系统的哪里?我如何检索它?

我目前已登录我的 Linux 系统,我想在我的终端上输出我的 Linux 密码和用户名,我需要写什么命令,它存储在哪个文件中,以及如何检索它?

答案1

简而言之:你无法知道你的密码是什么。

虽然它存储在文件中/etc/shadow,但它以一种称为哈希。这就像烤好的蛋糕与一组配料一样,没有办法将面粉从蛋糕中取出。

答案2

密码根本不存储在系统的任何地方。存储在/etc/shadow所谓的哈希密码。

一些文本的哈希值是通过执行所谓的单向函数文本(密码)上,从而创建一个字符串来检查。从设计上讲,这是“不可能的”(计算上不可行) 来逆转该过程。

可以做的是尝试“暴力”攻击 - 通过散列很多可能的密码,直到结果等于找到的哈希值。没有其他方法,您无法计算与您拥有的哈希值匹配的文本(=密码)。

有几种创建哈希的算法,它们在复杂性、哈希长度、所谓的概率/可能性方面有所不同碰撞(两个不同的文本具有相同的哈希值,如果哈希值比原始文本短,则最终必定会发生这种情况)。

目前典型的算法包括

  • MD5
  • SHA-1(也称为 SHA)

两者都不应当再用于加密/安全目的!

  • SHA-256
  • SHA-512
  • SHA-3(KECCAK 在 2012 年 10 月获联邦政府批准的新哈希算法竞赛中被宣布为获胜者)——尚未在 Ubuntu 中使用。

答案3

从其他答案中您知道您看不到密码。让我来解释一下原因。以正常形式存储密码的设计(称为明文)不是很安全(不仅对于操作系统而言),因为如果此类密码列表落入恶意人员手中,他可以立即登录,因为用户名列表通常很容易检索(在 Linux 中从/etc/passwd文件中检索)。这就是为什么使用哈希函数的原因。这些是单向函数 - 您可以根据值创建哈希,但不能基于哈希创建值。如果恶意人员获得哈希值列表,他就无法从中检索实际密码(或者至少更困难),并且用户仍然可以登录 - 当他传递密码时,密码会被转换为哈希并与存储的值进行比较。

偶尔你会听说有人入侵了某个网站并获取了密码,或者某个密码列表在某处泄露。如果这些密码以纯文本形式存储,攻击者可以立即访问某些帐户。如果这些密码经过了哈希处理,攻击者必须先破解它们。这意味着他会遇到更多麻烦,并且需要更多时间做出反应,例如将密码更改为新密码。Linux(以及任何基于 Unix 的系统)都遵循这种设计,这就是为什么你不能以任何其他方式打印你的密码(除非你拥有 root 用户权限并可以读取/etc/shadow文件)。

要打印您的用户名,请输入whoami

相关内容