在Linux / Debian中,密码(/ etc / passwd)是否被存储为纯文本?

有人告诉我,我有一些疑问,但我无法在网上find任何信息。

从Robert Morris和Ken Thompson(1979)( http://www.cs.yale.edu/homes/arvind/cs422/doc/unix-sec.pdf )的“密码安全:案例史”中引用序幕:

UNIX系统首先使用包含所有用户的实际密码的密码文件来实现,因此密码文件必须严格防止被读取或写入。

所以是的,原来,密码文件包含实际的密码

编辑

这是在UNIX中。 即使上面引用的论文出来,也被认为是一个坏主意。 由于Debian是在1991年之后,假设或者相信Linux发行版本将启用密码文件甚至没有隐藏保护是可笑的。

Debian passwd套件的初始版本更有可能使用非影子密码,这些密码会将encryption的密码存储在/ etc / passwd本身中。 当时使用的机制应该是'crypt',这在math上比现在的使用md5(尽pipe其他选项可用)的做法更简单。

如果你有机会,拿起Linux Pro杂志的“壳牌手册”版本。 我有一篇关于命令行用户操纵的4页的文章,并且讲述了UNIX密码安全的历史。

自1992年以来,我一直是Unix系统pipe理员,远在我们有/ etc / shadow之前。

/etc/shadow之前, /etc/passwd条目看起来像这样:

 user:XDjfiejfiejf:1001:1001:Joe User:/home/user:/bin/sh 

第二个字段是用户的encryption密码(不是散列)。 就像现在一样, /etc/passwd权限设置为644,意味着每个人都可以读取该文件。 /etc/passwd需要世界可读,以便(例如)程序可以将用户ID转换为用户名。

但是,这也使得暴力破解可能无法真正尝试login用户密码,只是对不同的string进行encryption,而当攻击程序的encryption结果与存储在/ etc / passwd,宾果,你有用户密码。

因此诞生了/etc/shadow 。 现在,/ etc / passwd文件的第二个字段只是'*',而encryption的密码存储在/ etc / shadow中,它的权限设置为640(或者有时是600) – 意味着你需要权限来读取encryption的string。 没有更多的蛮力攻击。

如果您对Debian真的好奇,可以在这里find所有的原始软件包( http://archive.debian.org/debian/ )。

从我可以通过查看包文件1.3中添加的阴影工具可以告诉。 快速浏览一下最早版本的login-utils的1.1源代码,显示出使用旧的crypt()函数,我相信这个函数使用了Triple DES 。

我一直在运行linux,因为slackware与内核1.0.13,我从来没有见过cleartext密码。 我强烈怀疑它发生过,但我只能保证我所看到的。

是。 影子密码文件稍后介绍。 我曾经不得不升级Slackware Linux系统来支持影子密码。 我很难回想起什么版本。 不过,我估计在2.0左右。

有一个更详细的Linux HOWTO 1 。

编辑

我最初误读 在Linux的/ etc / passwd中密码永远不会被存储为明文。 如前所述,在Linux中并不总是使用影子密码文件。

实际上,这个人的论点是有效的,从今天的angular度来看,DESencryption的密码和纯文本是相同的东西:)这将需要几秒钟(最多)来破解它。

另外,阴影和encryption不是一回事,看起来好像很多答案都是混淆的。 即使是现在,你也可以在/ etc / password中encryption你的密码,使其成为世界可读的。 但是你的问题不是很清楚这个部分。