Você diz que sabe como impor uma política de senhas em todo o sistema, mas vou reiterar o que fazer para quem não o fizer. Você pode usar um módulo PAM, pam_cracklib.so , que verifica se uma senha atende a determinados critérios antes de permitir que a senha seja aplicada a uma conta. No Ubuntu, o pacote libpam-cracklib instala este módulo e aplica a seguinte linha ao início de /etc/pam.d/common-password , o arquivo que lida com a alteração da senha de um usuário:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
Várias opções podem ser passadas para pam_cracklib.so e, neste caso, um comprimento mínimo de 8 é especificado com um requisito de alterações de 3 caracteres da senha antiga. Consulte o link para obter uma lista detalhada de todas as opções disponíveis.
Para limitar uma política a um determinado grupo de usuários, é possível utilizar o módulo pam_succeed_if.so , que só será bem-sucedido se um usuário corresponder a vários critérios. Por exemplo, para impor uma política de senha como a acima, mas deixando os usuários no grupo "sudo" isentos, use:
password [success=1 default=ignore] pam_succeed_if.so user ingroup sudo
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
Isso informa ao PAM para verificar se o usuário corresponde ao grupo 'sudo' e, em seguida, ignora o próximo módulo se isso for bem-sucedido. Caso contrário, continue com o próximo módulo, que impõe uma política de senha.
No entanto, se estiver usando um módulo PAM com a opção use_authtok como a configuração padrão do% Ubuntupam_unix.so com o pam_cracklib.so instalado, isso não funcionará corretamente. Como pam_unix.so depende de um módulo que tenha definido anteriormente a senha de usuário atual e a senha desejada, se o módulo pam_succeed_if.so for bem-sucedido, então passwd terá erro com passwd: Authentication token manipulation error . A maneira como eu cheguei foi usar uma segunda linha pam_unix.so :
password [success=2 default=ignore] pam_succeed_if.so user ingroup sudo
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512
password [success=1 default=ignore] pam_unix.so obscure sha512
Neste exemplo, se o usuário estiver no grupo 'sudo', o controle pula 2 módulos até a linha pam_unix.so final, que não inclui use_authtok . No entanto, se falhar, o controle passará para pam_cracklib.so e, em seguida, para o dependente pam_unix.so