De man pam.d , a descrição de required :
required
[success=ok new_authtok_reqd=ok ignore=ignore default=bad]
Com default=ignore , a falha de pam_unix não leva mais a falha de autenticação, já que seu script e, em seguida, pam_permit.so serão usados e pam_permit.so sempre será bem-sucedido. pam_unix ainda deve ter default=bad :
bad
this action indicates that the return code should be thought of as
indicative of the module failing. If this module is the first in
the stack to fail, its status value will be used for that of the
whole stack.