Ich bin gerade dabei, PAM zu verstehen. Im Moment verwende ich OTP und Passwort, aber ich möchte in der Lage sein, entweder OTP und Passwort zu verwenden, und wenn das fehlschlägt, dann benutze meinen YubiKey und mein Passwort. Ich bin auf Arch und meine System-Auth-Datei im Verzeichnis pam.d sieht so aus:
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
Akzeptierte Antwort:
Arch ist Linux PAM (das sich von Solaris PAM und FreeBSD PAM unterscheidet) und Linux PAM hat Mittel, um Regeln zu überspringen, also wäre eine Möglichkeit, dies zu tun, in Anlehnung an
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
...
was für den Yubikey, wenn das funktioniert, zwei Regeln nach unten springen sollte (in die env
und alle nachfolgenden Authentifizierungs-Setup-Schritte) und für OTP eine Regel für dasselbe, andernfalls wird die Authentifizierung verweigert. Ich bin mir nicht sicher, was der default
ist oder andere Optionen für [...]
Bits sein sollten, also setze ich sie auf Fehler.
Eine weitere Option ist ein Unterstapel, in der Hauptregeldatei hätten Sie so etwas wie:
...
auth substack otp-foo
auth substack yubikey-foo
...
und dann zusätzlich /etc/pam.d/{otp-foo,yubikey-foo}
Dateien würde man das if-authgood-or-pam_deny machen. In diesem Fall werden jedoch beide ausprobiert (Linux PAM funktioniert durch alle Substacks), im Gegensatz zum vorherigen Beispiel, wo, wenn der Yubikey funktioniert, die otp-Prüfung übersprungen wird.