Nota importante: módulos opcionais não serão ignorados, eles serão processados, seus resultados serão ignorados, ou seja, mesmo que falhem, o processo de autenticação será vencido ser abortado.
Existem muitas situações em que você pode querer que uma ação seja realizada (um módulo a ser executado) durante a autenticação, mas, mesmo em caso de falha, você não quer que o processo de autenticação seja abortado.
Um exemplo prático é se você quiser usar o pam para abrir automaticamente um dispositivo criptografado com criptografia dm durante o login, usando a mesma senha que a senha do usuário:
auth optional pam_exec.so expose_authtok quiet /usr/sbin/cryptsetup --allow-discards open UUID=... /home/username
Observe que se required
for usado em vez de optional
aqui, o primeiro login será bem-sucedido, pois cryptsetup retornará 0 como seu código de saída, mas se o usuário efetuar logout e efetuar login novamente, o login falhará o dispositivo já está aberto e o cryptsetup retornará um código de saída diferente de zero. No entanto, neste caso, você ainda deseja que o login seja bem-sucedido.
Este é apenas um exemplo que me veio à mente porque eu realmente o uso, ou seja, esta não é uma situação teórica, mas esta é uma entre muitas situações em que você deseja que um módulo com falha não aborte o processo de autenticação .