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