Řekněme, že jsem nakonfiguroval sshd
(propojeno s libpam.so.0
sdílená knihovna) k použití PAM a mám následující /etc/pam.d/sshd
obsah:
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_unix.so try_first_pass
auth required pam_google_authenticator.so
account requisite pam_nologin.so
account required pam_unix.so try_first_pass
password requisite pam_cracklib.so
password required pam_unix.so use_authtok nullok shadow try_first_pass
session required pam_loginuid.so
session required pam_limits.so
session required pam_unix.so try_first_pass
session optional pam_umask.so
session optional pam_systemd.so
session optional pam_env.so
session optional pam_lastlog.so silent noupdate showfailed
Mám pravdu, že PAM informuje sshd
o úspěchu nebo neúspěchu na konci každého stacku? Takže nejprve auth
zařízení se zpracují a výsledek se vrátí do sshd
a poté account
zařízení jsou zpracovány a výsledkem account
zásobník se vrátí do sshd
, atd? Je PAM informován démonem o ukončení ověřené relace?
Přijatá odpověď:
V jistém smyslu se to tak děje, ale neformuloval bych to tak.
Protože PAM neinformuje sshd aktivně, ale sshd žádá PAM prostřednictvím volání funkcí (jako pam_authenticate
, pam_acct_mgmt
atd.) a jedná podle výsledků. PAM také automaticky neví, kdy je relace uzavřena, ale musí být informována prostřednictvím pam_close_session
(protože relaci lze uzavřít z jiné aplikace).
Můžete si vyhledat zdrojový kód openssh, abyste pochopili, kde a jak sshd využívá PAM. Pokud vás zajímají podrobnosti, doporučil bych také příručku pro vývojáře aplikací Linux-PAM.