На Fedora 19
Когда я запускаю его, я в порядке. Я на Fedora 19.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
Вот информация о версии:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.22
Release : 3.fc19
ПРИМЕЧАНИЕ: я бы попробовал сделать это с одинарными кавычками, а не с двойными, так как вы имеете дело с ними *
, они могут быть странным образом расширены для вас.
CentOS 5 & 6
Попробовать ваш пример на CentOS 6 было хорошо, получил ОК, но он потерпел неудачу, как вы описали на CentOS 5.9.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic
Информация о версии:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.9
Release : 3.3
Жук?
То, с чем вы столкнулись, может показаться ошибкой. Если вы возьмете свою строку и введете в cracklib-check
нее все больше и больше строк, вы заметите, что когда вы доберетесь до 26-го символа, он начнет давать сбой:
# 25
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iS"
M1uG*xgRCthKWwjIjWc*010iS: OK
# 26
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSt"
M1uG*xgRCthKWwjIjWc*010iSt: it is too simplistic/systematic
Более подробно об этом, если я заменю последний символ с, t
чтобы сказать, что v
он продолжает работать.
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK
Так что казалось бы, что в версии cracklib-check
зацикливается на подстроке Sth
.
В кусках строки, которую вы предоставили, определенно есть что-то странное. Если я возьму концевую часть хвоста и пропущу переднюю часть, я также могу заставить эту часть потерпеть крах.
$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic
Эта же строка вызывает проблемы в Fedora 19 и CentOS 6!
ОБНОВЛЕНИЕ № 1
На основе @ Waxwing - х очень хорошие слежки, теперь мы знаем , что эвристика используется получала подножку , если> 4 -х символов были слишком рядом друг с другом. Патч был введен , который изменил эту эвристику , так что общая длина пароля рассматриваемого учитывалась для устранения этих ложных срабатываний.
Выводы?
Основываясь на некоторых моих ограниченных тестах, может показаться, что здесь есть какая-то странная эвристика. Определенные строки, которые, казалось бы, были бы в порядке, приводят в действие его.
Если вы пытаетесь систематизировать это, я бы предложил обернуть процесс генерации и оценки пароля, а затем выйти из цикла после того, как был сгенерирован пароль, который убывает cracklib-check
.
Или, по крайней мере, я бы предложил перейти на более новую версию, которая включает исправления, которые @maxwing упоминает в своем ответе.
Пароль Gen Альтернативы
PWGen
Я также добавлю, что я обычно использую pwgen
для генерации паролей. Это может быть полезно для вас и здесь.
$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
urandom
Вы также можете использовать небольшую магию сценариев tr
, /dev/urandom
и fold
получить очень качественный случайный пароль.
$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF
Команда fold
может контролировать длину. В качестве альтернативы вы можете сделать это тоже:
$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK