Wie macht man einen PAM-Substack zur „Voraussetzung“?

Wie macht man einen PAM-Substack zur „Voraussetzung“?

Für den Authentifizierungsabschnitt meiner PAM-Konfiguration loginusw. mdmrufen Sie auf common-auth. Ich habe common-authFolgendes als Unterstapel (als auth substack krb5ldap-cache-auth) aufgerufen:

auth optional pam_echo.so Trying UNIX
# Try UNIX, empty passwords OK
auth sufficient pam_unix.so nullok

auth optional pam_echo.so Checking UID
# If the uid < 500 and UNIX didn't work, then die.
auth requisite pam_succeed_if.so uid >= 500 quiet_success

auth optional pam_echo.so Trying Kerberos
# Try Kerberos, using the same password
# If the password is correct (success), then skip next lines
# If the password is wrong (auth_err), then die
# If Kerberos can't connect (?), then ignore
auth [success=2 auth_err=die default=ignore] pam_krb5.so debug use_first_pass

# Try the cache, using the same password
# Last chance.
auth optional pam_echo.so Trying cache
auth [success=done default=die] pam_ccreds.so action=validate use_first_pass

# Kerberos validated our password.
auth optional pam_echo.so Kerberos validated
# Store the password hash.
auth optional pam_ccreds.so action=store use_first_pass
# See if we can mount user drives, since we have a Kerberos token.
auth optional pam_mount.so
auth optional pam_echo.so Done.

(Wird pam_echo.sonur zum Debuggen verwendet.)

Dies scheint für eine erfolgreiche Authentifizierung gut zu funktionieren. Der Substack-Mechanismus ist praktisch, da ich „sufficient“ und „done“ verwenden kann, um den Substack zu beenden, ohne den größeren Stack zu beenden.

Aber bei einer fehlgeschlagenen Authentifizierung wird der größere Stapel fortgesetzt (wird beispielsweise mdmnutzlos aufrufen pam_gnome_keyring.so, loginwird nutzlos aufrufen pam_group.so), obwohl er beendet werden sollte.

Gibt es eine Möglichkeit, einen Unterstapel aufzurufen, sodass der Stapel beendet wird, wenn der Unterstapel fehlschlägt? Ich habe es versucht, auth requisite substack krb5ldap-cache-authaber das ist einfach eine schlechte PAM-Syntax.

Antwort1

Aus dem PAM-Administratorhandbuch:

substack

Schließen Sie alle Zeilen des angegebenen Typs aus der Konfigurationsdatei ein, die als Argument für dieses Steuerelement angegeben ist.Der Unterschied besteht darin, includedass die Auswertung der Done- und Die-Aktionen in einem Unterstapel nicht dazu führt, dass der Rest des gesamten Modulstapels übersprungen wird, sondern nur der Unterstapel.

Wenn ich Ihre Frage lese, scheint es mir, als ob Sie nach includeund nicht nach suchen substack. Daher sollten Sie wahrscheinlich ersetzen ...

auth substack krb5ldap-cache-auth

mit...

auth include krb5ldap-cache-auth

Auf einem Debian-System müssen Sie jedoch möglicherweise stattdessen Folgendes verwenden:

@include krb5ldap-cache-auth

Außerdem müssen Sie auf RedHat-Systemen und Derivaten möglicherweise sogar verwenden pam_stack, das oft als veraltet gilt (ich glaube, aufgrund von Problemen bei der Handhabung von Include-Rekursionen):

auth requisite pam_stack.so service=krb5ldap-cache-auth

In diesen Fällen wird PAM , wenn irgendetwas eine doneoder dieeine Aktion in auslöst, diekrb5ldap-cache-authgesamter Stapel, und nicht nur der Unterstapel.

verwandte Informationen