现代Unix / Linux系统上的密码仍然限制在8个字符以内?

多年以前,Unix密码被限制为8个字符,或者如果您input的密码长度超过8个字符,那么额外的configuration就不会有任何区别。

大多数现代Unix / Linux系统仍然如此吗?

如果是这样,那么在大多数系统上,更长的密码何时变成可能?

有没有一种简单的方法来判断一个给定的系统是否支持更长的密码,如果是的话,有效的最大值(如果有的话)是多less?

我已经做了一些关于这个话题的networkingsearch,并且找不到任何确定的东西。 大部分出现在21世纪初的时候,我认为8个字符的限制仍然是常见的(或者普遍存在,足以保证这个限制)。

Solutions Collecting From Web of "现代Unix / Linux系统上的密码仍然限制在8个字符以内?"

glibc2 (任何现代Linux发行版)中,密码加密函数可以使用MD5 / SHA-xxx(由魔术盐前缀引发),然后将其视为重要的所有输入字符(请参阅man 3 crypt )。 对于你的系统的一个简单的测试,你可以尝试像这样:

#!/bin/perl -w my $oldsalt = '@@'; my $md5salt = '$1$@@$'; print crypt("12345678", $oldsalt) . "\n"; print crypt("123456789", $oldsalt) . "\n"; print crypt("12345678", $md5salt) . "\n"; print crypt("12345678extend-this-as-long-as-you-like-0", $md5salt) . "\n"; print crypt("12345678extend-this-as-long-as-you-like-1", $md5salt) . "\n"; 

(在我的系统上给出)

 @@nDzfhV1wWVg @@nDzfhV1wWVg $1$@@$PrkF53HP.ZP4NXNyBr/kF. $1$@@$4fnlt5pOxTblqQm3M1HK10 $1$@@$D3J3hluAY8pf2.AssyXzn0 

其他* ix变体至少支持Solaris 10以上版本,例如crypt(3) 。 但是,这是一个非标准的扩展 – POSIX没有定义它 。

尽管原始的基于DES的算法仅使用密码的前8个字符,但Linux,Solaris和其他较新的系统现在还支持其他密码哈希算法,如MD5 ,这些算法没有这个限制。 如果您的网络包含较旧的系统并且使用了NIS,则有时需要继续使用旧的算法。 如果只输入您的> 8个字符的密码的前8个字符,系统将会登录,您可以看到旧的基于DES的算法仍在使用中。

因为它是一个哈希算法,所以MD5没有内在的限制。 但是,各种接口通常会强加一些至少72个字符的限制 。

虽然最初加密的密码被存储在一个世界可读的文件( /etc/passwd )中,但是它通常存储在一个单独的影子数据库(例如/etc/shadow )中,这个数据库只能被root用户读取。 因此,算法的强度不再像过去那样重要。 但是,如果MD5不足,则可以在某些系统上使用Blowfish或SHA。 而且Solaris支持可插入的密码加密模块,使您可以使用任何疯狂的方案 。 当然,如果您使用的是LDAP或其他共享用户数据库,那么您将需要选择所有系统都支持的算法。

你问关于crypt算法吗?

http://linux.die.net/man/3/crypt

“通过获取密钥的前八个字符中的每一个的最低7位…”

“该函数的glibc2版本具有以下附加功能…整个密钥在这里非常重要(而不仅仅是前8个字节)”。

这里有一个暗示,这个改变发生了多久。

 Glibc 2 HOWTO Eric Green, ejg3@cornell.edu v1.6, 22 June 1998 

不适用于Linux。 只有8个,如果你禁用MD5哈希。

http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/security-guide/s1-wstation-pass.html

您可以管理执行更长和更复杂密码的策略。

全长在这里讨论:

http://www.ratliff.net/blog/2007/09/20/password-length/

你会发现这篇文章的兴趣。 有一种叫做PAM(Password Authentication modulee)的密码验证模块(Password Authentication modulee),它通过一系列模块(在/etc/pam.d/passwd/etc/pam.conf配置)来运行你的密码来确定密码是否有效。

我认为,在Linux上,实际的密码从/ etc / passwd移到了shadow的时候。 我在2000年前后猜测,红帽6.x长时间密码IIRC。 在2000年左右,还有很多老太阳,他们有密码和用户名的限制。