V současné době začínám rozumět PAM. Právě teď používám OTP a heslo, ale chci mít možnost používat buď OTP a heslo, a pokud to selže, použijte svůj YubiKey a heslo. Jsem na Archu a můj soubor systémového auth v adresáři pam.d vypadá takto:
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
Přijatá odpověď:
Arch je Linux PAM (který se liší od Solaris PAM a FreeBSD PAM) a Linux PAM má prostředky k přeskočení pravidel, takže jeden způsob, jak to udělat, by byl v souladu s
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
...
což pro yubikey, pokud to funguje, by mělo skočit o dvě pravidla dolů (do env
a jakékoli následné kroky nastavení autentizace) a pro OTP jedno pravidlo pro totéž, jinak se autentizace odmítne. Nejsem si jistý, co je default
nebo další možnosti pro [...]
bity by měly být, takže jsem je nastavil na selhání.
Další možností je substack, v hlavním souboru pravidel byste měli něco jako:
...
auth substack otp-foo
auth substack yubikey-foo
...
a poté další /etc/pam.d/{otp-foo,yubikey-foo}
soubory, které by člověk udělal if-authgood-or-pam_deny. V tomto případě se však vyzkouší obojí (Linux PAM funguje přes všechny dílčí sady), na rozdíl od předchozího příkladu, kde pokud yubikey funguje, přeskočí kontrolu otp.