Digamos que tengo configurado sshd
(vinculado contra libpam.so.0
biblioteca compartida) para usar PAM y he seguido /etc/pam.d/sshd
contenido:
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
¿Tengo razón en que PAM informa a sshd
? sobre el éxito o el fracaso al final de cada pila? Así que primero auth
las instalaciones se procesan y luego el resultado se devuelve a sshd
, luego account
las instalaciones son procesadas y resultado de account
la pila se devuelve a sshd
, ¿etc? ¿El daemon informa a PAM cuando finaliza la sesión autenticada?
Respuesta aceptada:
En cierto sentido, eso es lo que está sucediendo, pero no lo expresaría de esa manera.
Porque PAM no informa a sshd activamente, sino que sshd le pregunta a PAM a través de llamadas a funciones (como pam_authenticate
, pam_acct_mgmt
, etc.) y actúa en función de los resultados. PAM tampoco sabe automáticamente cuándo se cierra una sesión, pero debe ser informado a través de pam_close_session
(ya que una sesión se puede cerrar desde otra aplicación).
Puede buscar el código fuente de openssh para comprender dónde y cómo sshd utiliza PAM. También recomendaría la Guía para desarrolladores de aplicaciones Linux-PAM si está interesado en los detalles.