Das OP verwechselt zwei verschiedene Fragen: Richtlinie und Kennwortlänge .
Wie bereits von @BillThor angegeben, wird die Kennwortlänge vom PAM-Modul unter dem nicht wirklich verheißungsvollen Schlüsselwort obscure
in der Datei /etc/pam.d/common-password behandelt, die die folgende Zeile enthält:
password [success=1 default=ignore] pam_unix.so obscure sha512
Das obscure
Schlüsselwort steht für (laut man pam_unix ):
obscure
Enable some extra checks on password strength. These checks are based on the "obscure" checks in the
original shadow package. The behavior is similar to the pam_cracklib module, but for
non-dictionary-based checks. The following checks are implemented:
Palindrome
Verifies that the new password is not a palindrome of (i.e., the reverse of) the previous one.
Case Change Only
Verifies that the new password isn't the same as the old one with a change of case.
Similar
Verifies that the new password isn't too much like the previous one.
Simple
Is the new password too simple? This is based on the length of the password and the number of
different types of characters (alpha, numeric, etc.) used.
Rotated
Is the new password a rotated version of the old password? (E.g., "billy" and "illyb")
Die Vorschrift von obscure
kann wie folgt überschrieben werden: Schreiben Sie in /etc/pam.d/common-password die obige Zeile neu als
password [success=1 default=ignore] pam_unix.so obscure sha512 minlen=20
oder was auch immer du magst.
Um herauszufinden, wo genau das Passwort mit der Mindestlänge definiert ist, müssen Sie in die Tiefen von Pam eintauchen:
# apt-cache search pam_unix.so
libpam-modules - Pluggable Authentication Modules for PAM
# apt-get source libpam-modules
... und dann finden Sie heraus, wo die minimale Passwortlänge definiert ist:
# grep -rl UNIX_MIN_PASS_LEN
modules/pam_unix/support.h
modules/pam_unix/support.c
debian/patches-applied/007_modules_pam_unix
debian/patches-applied/055_pam_unix_nullok_secure
Wenn Sie die Debian-Patches lesen, werden Sie sehen, dass der Parameter UNIX_MIN_PASS_LEN (der 27. mögliche Parameter) einer Variablen namens minlen entspricht , die in /modules/pam_unix/support.c festgelegt ist. Einer der Debian-Patches behebt jedoch pass_min_len
: Die Datei debian / patches-applied / 007_modules_pam_unix enthält die folgenden Zeilen:
- int pass_min_len = 0;
+ int pass_min_len = 6;
und die Datei debian / Changelog spezifiziert:
- Weitere Bereinigungen von 007_modules_pam_unix - verwenden Sie keine globale Variable für pass_min_len, verschieben Sie die Längenprüfung nicht unentgeltlich in die "obskuren" Prüfungen und internationalisieren Sie die Fehlerzeichenfolgen.
Ich mochte PAM immer nicht und aus diesem Grund: Um einen trivialen Parameter wie die minimale Kennwortlänge zu finden, müssen Sie sich den Quellcode ansehen.
Die Informationen, die von angezeigt werden, chage -l username
sind stattdessen vollständig in der Datei / etc / shadow enthalten: Auf der Manpage heißt es:
shadow ist eine Datei, die die Kennwortinformationen für die Systemkonten und optionale Alterungsinformationen enthält.
Die Felder jedes Eintrags sind:
Anmeldename, verschlüsseltes Kennwort, Datum der letzten Kennwortänderung, Mindestalter für Kennwörter, Höchstalter für Kennwörter, Kennwortwarnzeitraum, Zeitraum der Kennwortinaktivität, Ablaufdatum des Kontos sowie ein reserviertes Feld für die zukünftige Verwendung.
Ein einfach zu überprüfen, strace
der chage
Befehl zeigt , welche Dateien geöffnet werden ,
# strace -e trace=open -f chage -l myusername
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/proc/filesystems", O_RDONLY) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/etc/passwd", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW) = 3
open("/etc/shadow", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW) = 4
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 5
open("/usr/share/locale/en_US/LC_MESSAGES/shadow.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/shadow.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US/LC_MESSAGES/shadow.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en/LC_MESSAGES/shadow.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 5
Last password change : mag 05, 2014
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
+++ exited with 0 +++