O OP confunde duas questões diferentes: política e tamanho da senha .
Como já foi dito por @BillThor, o comprimento da senha é tratado pelo módulo PAM, sob a palavra-chave não verdadeiramente propícia obscure
, no arquivo /etc/pam.d/common-password, que contém a seguinte linha:
password [success=1 default=ignore] pam_unix.so obscure sha512
A palavra-chave obscure
significa (de acordo com 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")
A prescrição por obscure
pode ser sobrescrita da seguinte forma: em /etc/pam.d/common-password, reescreva a linha acima como
password [success=1 default=ignore] pam_unix.so obscure sha512 minlen=20
ou o que você quiser.
Encontrar exatamente onde a senha de tamanho mínimo é definida requer mergulhar nas profundezas do pam:
# apt-cache search pam_unix.so
libpam-modules - Pluggable Authentication Modules for PAM
# apt-get source libpam-modules
... e depois para descobrir onde o comprimento mínimo do passord é definido:
# 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
Examinando os patches debian, você verá que o parâmetro UNIX_MIN_PASS_LEN (o 27º parâmetro possível) corresponde a uma variável chamada minlen , que é configurada em /modules/pam_unix/support.c. No entanto, um dos patches debian corrige pass_min_len
: o arquivo debian / patches-applied / 007_modules_pam_unix contém as linhas:
- int pass_min_len = 0;
+ int pass_min_len = 6;
e o arquivo debian / Changelog especifica:
- Further cleanups of 007_modules_pam_unix -- don't use a global variable for pass_min_len, don't gratuitously move the length checking into the "obscure" checks, and internationalize the error strings.
Eu sempre não gostei do PAM e, por essa razão: para localizar um parâmetro trivial como o tamanho mínimo da senha, é obrigatório procurar no código-fonte.
As informações exibidas por chage -l username
estão completamente contidas no arquivo / etc / shadow: A página Man estados:
shadow is a file which contains the password information for the system's accounts and optional aging information.
Os campos de cada entrada são:
Login name, encrypted password, date of last password change, minimum password age, maximum password age, password warning period, password inactivity period, account expiration date, plus a reserved field for future use.
Apenas para confirmar, um strace
do comando chage
mostra quais arquivos são abertos,
# 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 +++