J'apprends actuellement à comprendre PAM. En ce moment, j'utilise OTP et mot de passe, mais je veux pouvoir utiliser OTP et mot de passe et si cela échoue, utilisez ma YubiKey et mon mot de passe. Je suis sur Arch et mon fichier system-auth dans le répertoire pam.d ressemble à ceci :
auth required pam_oath.so usersfile=/etc/users.oath window=30 digits=6 debug
auth required pam_unix.so try_first_pass nullok
auth optional pam_permit.so
auth required pam_env.so
account required pam_unix.so
account optional pam_permit.so
account required pam_time.so
password required pam_unix.so try_first_pass nullok sha512 shadow
password optional pam_permit.so
session required pam_limits.so
session required pam_unix.so
session optional pam_permit.so
Réponse acceptée :
Arch est Linux PAM (qui est différent de Solaris PAM et FreeBSD PAM) et Linux PAM a des moyens d'ignorer les règles, donc une façon de le faire serait dans le sens de
auth required pam_unix.so ... # password
auth [success=2 default=bad] pam_yubikey ...
auth [success=1 default=bad] pam_otp ...
auth required pam_deny.so
auth required pam_env.so
...
qui pour le yubikey si cela fonctionne devrait sauter deux règles vers le bas (vers le env
et toutes les étapes de configuration d'authentification ultérieures) et pour OTP une règle vers le bas pour la même chose, sinon refuser l'authentification. Je ne sais pas quel est le default
ou d'autres options pour le [...]
les bits devraient être, donc je les ai mis en échec.
Une autre option est une sous-pile, dans le fichier de règles principal, vous auriez quelque chose comme :
...
auth substack otp-foo
auth substack yubikey-foo
...
puis supplémentaire /etc/pam.d/{otp-foo,yubikey-foo}
fichiers on ferait le if-authgood-or-pam_deny. Cependant, dans ce cas, les deux seront essayés (Linux PAM fonctionne à travers toutes les sous-piles) contrairement à l'exemple précédent où si la yubikey fonctionne, elle ignore la vérification otp.