Trên Fedora 19
Khi tôi chạy nó tôi nhận được OK. Tôi đang ở Fedora 19.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
Đây là thông tin phiên bản:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.22
Release : 3.fc19
LƯU Ý: Tôi sẽ thử nó với các trích dẫn đơn thay vì các câu hỏi đôi vì bạn đang xử lý *
chúng có thể được mở rộng theo những cách lạ đối với bạn.
CentOS 5 & 6
Thử ví dụ của bạn trên CentOS 6 là ổn, đã ổn, nhưng nó đã thất bại như bạn mô tả trên CentOS 5.9.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic
Thông tin phiên bản:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.9
Release : 3.3
Một lỗi?
Những gì bạn đã vấp vào dường như là một lỗi. Nếu bạn lấy chuỗi của mình và chạy càng nhiều chuỗi của bạn vào thì cracklib-check
bạn sẽ nhận thấy rằng khi bạn đến ký tự thứ 26 thì nó bắt đầu thất bại:
# 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ìm hiểu sâu hơn về điều này nếu tôi thay đổi nhân vật cuối cùng từ a t
để nói rằng v
nó tiếp tục hoạt động.
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK
Vì vậy, có vẻ như trong phiên bản cracklib-check
đang bị treo trên chuỗi con Sth
.
Chắc chắn có điều gì đó kỳ lạ về các đoạn của chuỗi bạn đã cung cấp. Nếu tôi lấy phần cuối đuôi và bỏ qua phần trước tôi cũng có thể khiến phần này bị hỏng.
$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic
Chuỗi tương tự cũng gây ra vấn đề trên Fedora 19 & CentOS 6!
CẬP NHẬT # 1
Dựa trên sự điều tra rất hay của @ waxwing , giờ đây chúng ta biết rằng heuristic được sử dụng đã tăng gấp ba nếu> 4 ký tự quá liền kề nhau. Một bản vá đã được giới thiệu đã thay đổi heuristic này để độ dài tổng thể của mật khẩu được xem xét đã được tính đến để loại bỏ các kết quả dương tính giả này.
Kết luận?
Dựa trên một số thử nghiệm hạn chế của tôi, có vẻ như có một số heuristic lạ đang chơi ở đây. Một số chuỗi có vẻ sẽ ổn là vấp ngã nó.
Nếu bạn đang cố gắng mã hóa điều này, tôi sẽ khuyên bạn nên tạo và đánh giá mật khẩu và sau đó thoát ra khỏi vòng lặp sau khi mật khẩu được tạo ra xuất hiện cracklib-check
.
Hoặc ít nhất tôi khuyên bạn nên nâng cấp lên phiên bản mới hơn bao gồm các bản sửa lỗi mà @maxwing đề cập trong câu trả lời của anh ấy.
Mật khẩu thay thế Gen
pwgen
Tôi cũng sẽ thêm rằng tôi thường sử dụng pwgen
để tạo mật khẩu. Điều đó có thể hữu ích cho bạn ở đây là tốt.
$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
cộng đồng
Bạn cũng có thể sử dụng một chút ma thuật kịch bản với tr
, /dev/urandom
và fold
để có được một mật khẩu ngẫu nhiên chất lượng rất cao.
$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF
Các fold
lệnh có thể kiểm soát độ dài. Để thay thế, bạn cũng có thể làm điều này:
$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK