Являются ли пароли для современных систем Unix/Linux по-прежнему ограничены 8 символами?
Несколько лет назад это было так, что пароли Unix были ограничены 8 символами или что, если вы сделали пароль длиннее 8 символов, дополнительный размер не изменится.
Это все еще имеет место на большинстве современных систем Unix/Linux?
Если это так, когда появились более длинные пароли в большинстве систем?
Есть ли простой способ сказать, поддерживает ли данная система более длинные пароли, и если да, то какой эффективный максимум (если есть)?
Я сделал несколько веб-поиска по этой теме и не мог найти ничего окончательного; многое из того, что появилось, было с начала 2000-х годов, когда я думаю, что ограничение 8 символов было все еще распространено (или достаточно распространено, чтобы гарантировать, что он придерживается этого предела).
Ответы
Ответ 1
В glibc2 (любой современный дистрибутив Linux) функция шифрования паролей может использовать MD5/SHA-xxx (спровоцированную префиксом магической соли), который затем обрабатывает как значимые все входные символы (см. man 3 crypt). Для простого теста в вашей системе вы можете попробовать что-то вроде:
#!/bin/perl -w
my $oldsalt = '@@';
my $md5salt = '[email protected]@$';
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
[email protected]@$PrkF53HP.ZP4NXNyBr/kF.
[email protected]@$4fnlt5pOxTblqQm3M1HK10
[email protected]@$D3J3hluAY8pf2.AssyXzn0
Другие * ix варианты поддерживают аналогичные - например. crypt (3), поскольку, по крайней мере, Solaris 10.
Однако это нестандартное расширение - POSIX не определяет его.
Ответ 2
Хотя оригинальный алгоритм на основе DES использовал только первые 8 символов пароля, Linux, Solaris и других более новых систем поддерживают другие алгоритмы хеша пароля, такие как MD5, которые не имеют этого ограничения. Иногда необходимо продолжать использовать старый алгоритм, если ваша сеть содержит старые системы и используется NIS. Вы можете сказать, что старый алгоритм на основе DES все еще используется, если система войдет в систему, когда вы вводите только первые 8 символов вашего пароля с 8 символами.
Поскольку это хэш-алгоритм, MD5 не имеет собственного предела. Однако различные интерфейсы обычно накладывают некоторый предел не менее 72 символов.
Хотя первоначально зашифрованный пароль был сохранен в файле, читаемом во всем мире (/etc/passwd
), он теперь обычно хранится в отдельной базе данных теневой копии (например, /etc/shadow
), которая доступна только для чтения от root. Следовательно, сила алгоритма уже не столь важна, как когда-то была. Однако, если MD5 неадекватен, Blowfish или SHA могут использоваться вместо некоторых систем. И Solaris поддерживает подключаемые модули шифрования паролей, позволяя использовать любую сумасшедшую схему. Конечно, если вы используете LDAP или какую-либо другую общую базу данных пользователей, вам нужно будет выбрать алгоритм, поддерживаемый всеми вашими системами.
Ответ 3
Вы спрашиваете о алгоритме crypt
?
http://linux.die.net/man/3/crypt
"Принимая самые младшие 7 бит каждого из первых восьми символов ключа..."
"Версия этой функции glibc2 имеет следующие дополнительные функции.... Весь ключ здесь значителен (вместо первых 8 байтов).
Здесь намек на то, как давно это изменение произошло.
Glibc 2 HOWTO
Eric Green, [email protected]
v1.6, 22 June 1998
Ответ 4
Не для 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/
Ответ 5
Вы найдете этот article. Существует что-то, называемое PAM (модуль аутентификации паролей), который запускает ваш пароль через ряд модулей (настроенных в /etc/pam.d/passwd
или /etc/pam.conf
), чтобы определить, действительно ли пароль действителен или нет.
Ответ 6
Я думаю, что в то время, когда фактические пароли были перенесены из /etc/passwd в тень, на Linux. Я предполагаю, что около 2000 года у Red Hat 6.x были длинные пароли IIRC. Примерно в 2000 году было еще много старого SUN, и у них были ограничения на пароль и имя пользователя.