Em um servidor RHEL7, tenho que implementar duas políticas de senha que podem ser descritas como parâmetros do módulo PAM pam_pwquality:
- requisito de senha pam_pwquality.so try_first_pass local_users_only minlen=14
- requisito de senha pam_pwquality.so try_first_pass local_users_only dcredit=0 ucredit=0 ocredit=0 lcredit=0 minclass=3 maxsequence=1
Além disso, a configuração padrão do RHEL 7 PAM já contém a seguinte entrada de pam_pwquality:
- requisito de senha pam_pwquality.so try_first_pass local_users_only retry=3
Eu tenho os requisitos para aplicar a política de senha da entrada 3 a todos os usuários e a política de senha a dois grupos diferentes de usuários locais denominados group1 e group2.
Para aplicar esses requisitos, adicionei o seguinte código em /etc/pam.d/password-auth-ac e /etc/pam.d/system-auth-ac após a entrada pam_pwquality padrão (chamada 3. nesta pergunta) :
password requisite pam_pwquality.so try_first_pass local_users_only minlen=14 # Default RHEL7 pam_pwquality.so entry
#BEGIN PWPOLICY 1
password [success=1 default=ignore] pam_succeed_if.so user notingroup group1
password requisite pam_pwquality.so try_first_pass local_users_only minlen=14 use_authtok
#END PWPOLICY 1
#BEGIN PWPOLICY 2
password [success=1 default=ignore] pam_succeed_if.so user notingroup group2
password requisite pam_pwquality.so try_first_pass local_users_only dcredit=0 ucredit=0 ocredit=0 lcredit=0 minclass=3 maxsequence=1 use_authtok
#END PWPOLICY 2
Essa configuração funciona conforme o esperado, mas tem a desvantagem de que quando um usuário (incluído no grupo1 e grupo2) altera a senha ele precisa repeti-la várias vezes, conforme mostrado no exemplo a seguir:
[test@rhel7 ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
New password:
Retype new password:
Retype new password:
Retype new password:
passwd: all authentication tokens updated successfully.
A opção "use_authtok" incluída nas minhas duas últimas entradas pam_pwquality parece ser ignorada.
Você sabe o que há de errado com essa configuração ou outros métodos para implementar esses requisitos?
O problema aqui é duplo:
pam_pwquality
foi projetado para solicitar explicitamente uma verificação de senha compam_get_authtok_verify
, euse_authtok
se aplica apenas apam_get_authtok_noverify
.pam_succeed_if
saltos não estão funcionando do jeito que você pensa.Acho que você pode querer inverter a ordem e adicionar e usar a sintaxe de colchetes para obter o que deseja:
Não parece haver nenhuma diferença para mim entre a política do Grupo #1 e o padrão. Supondo que isso não seja intencional, acredito que o acima deve funcionar se você precisar que todos os 3 sejam diferentes.
Além disso: Esta solução assume que a associação group1 & group2 é mutuamente exclusiva. Se alguém estiver em ambos os grupos, o grupo1 terá precedência.