Ich studiere PAM und bin etwas ahnungslos über die Bedeutung einer Kombination von Steuerflags. Aus der Red Hat Dokumentation haben wir:
Der erforderliche
Ausfall eines solchen PAM führt letztendlich dazu, dass die PAM-API einen Fehler zurückgibt,
aber erst, nachdem die verbleibenden gestapelten Module (für diesen Dienst und Typ)
aufgerufen wurdenerforderlich
wie erforderlich, aber falls ein solches Modul einen Fehler zurückgibt,
wird die Kontrolle direkt an die Anwendung zurückgegeben.Ein ausreichender
Erfolg eines solchen Moduls reicht aus, um die Authentifizierungsanforderungen
des Modulstapels zu erfüllen (wenn ein vorheriges erforderliches Modul fehlgeschlagen ist
, wird der Erfolg dieses Moduls ignoriert). Ein Ausfall dieses Moduls wird
nicht als schwerwiegend angesehen, um die Anwendung zufrieden zu stellen, dass dieser Typ erfolgreich war. Wenn das
Modul erfolgreich ist, gibt das PAM-Framework den Erfolg sofort
an die Anwendung zurück, ohne andere Module auszuprobieren.
Also, nach meinem Verständnis, wenn ein Modul requisite
fehlschlägt, wird der gesamte Stapel von Modulen nicht geparst, und die Kontrolle geht sofort zurück an die Anwendung.
Wenn ein Modul sufficient
erfolgreich ist, wird der Rest des Modulstapels nicht geparst und die Kontrolle geht sofort zurück an die Anwendung.
Wenn ein Modul required
ist fehlschlägt, wird der gesamte Stapel geparst.
Jetzt kann ich nicht verstehen, was das Verhalten sein wird, wenn ein bestimmtes Modul required
ist schlägt fehl und ein weiteres Modul ist sufficient
gelingt.
Akzeptierte Antwort:
PAM durchläuft die Elemente auf dem Stapel der Reihe nach. Es erinnert sich nur daran, in welchem Zustand es sich befindet (erfolgreich oder verweigert, wobei Erfolg bisher Erfolg bedeutet), nicht daran, wie es diesen Zustand erreicht hat.
Wenn ein Artikel mit sufficient
gekennzeichnet ist erfolgreich ist, stoppt die PAM-Bibliothek die Verarbeitung dieses Stacks. Dies geschieht unabhängig davon, ob vorher required
war Artikel oder nicht. An diesem Punkt gibt PAM den aktuellen Status zurück:Erfolg, wenn kein vorheriger required
Element fehlgeschlagen, andernfalls verweigert.
Ebenso, wenn ein Artikel mit required
gekennzeichnet ist fehlschlägt, stoppt die PAM-Bibliothek die Verarbeitung und gibt einen Fehler zurück. Dabei ist es unerheblich, ob ein vorheriger required
ist Element fehlgeschlagen.
Mit anderen Worten, required
führt nicht unbedingt dazu, dass der gesamte Stack verarbeitet wird. Es bedeutet nur, weiterzumachen.