Diciamo che ho configurato sshd
(collegato a libpam.so.0
libreria condivisa) per usare PAM e ho seguito /etc/pam.d/sshd
contenuto:
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
Ho ragione sul fatto che PAM informa sshd
sul successo o sul fallimento alla fine di ogni pila? Quindi prima auth
le strutture vengono elaborate e quindi il risultato viene restituito a sshd
, quindi account
le strutture vengono elaborate e il risultato di account
lo stack viene restituito a sshd
, eccetera? PAM viene informato dal demone al termine della sessione autenticata?
Risposta accettata:
In un certo senso è ciò che sta accadendo, ma non lo definirei in questo modo.
Perché PAM non informa sshd attivamente, ma piuttosto sshd chiede a PAM tramite chiamate di funzione (come pam_authenticate
, pam_acct_mgmt
, ecc.) e agisce in base ai risultati. PAM inoltre non sa automaticamente quando una sessione viene chiusa, ma deve essere informato tramite pam_close_session
(poiché una sessione può essere chiusa da un'altra applicazione).
Puoi cercare il codice sorgente di openssh per capire dove e come sshd utilizza PAM. Consiglierei anche la Guida per gli sviluppatori di applicazioni Linux-PAM se sei interessato ai dettagli.