Ich lerne PAM und bin etwas ratlos über die Bedeutung einer Kombination von Kontroll-Flags. Aus der Red Hat-Dokumentation haben wir:
Der erforderliche
Ausfall eines solchen PAM führt letztendlich dazu, dass die PAM-API nicht mehr ausgeführt wird, sondern erst, nachdem die verbleibenden gestapelten Module (für diesen Dienst und Typ) aufgerufen wurdenErforderlich
wie erforderlich. Wenn jedoch ein solches Modul einen Fehler zurückgibt, wird die Steuerung direkt an die Anwendung zurückgegeben.Ein ausreichender
Erfolg eines solchen Moduls reicht aus, um die Authentifizierungsanforderungen des Modulstapels zu erfüllen (wenn ein zuvor erforderliches Modul ausgefallen ist, wird der Erfolg dieses Moduls ignoriert). Ein Ausfall dieses Moduls gilt nicht als schwerwiegend für die erfolgreiche Anwendung dieses Typs. Wenn das Modul erfolgreich ist, gibt das PAM-Framework den Erfolg sofort an die Anwendung zurück, ohne andere Module auszuprobieren.
Wenn also nach meinem Verständnis ein Modul requisite
ausfällt, wird nicht der gesamte Modulstapel analysiert, und die Steuerung kehrt sofort zur Anwendung zurück. Wenn ein Modul sufficient
erfolgreich ist, wird der Rest des Modulstapels nicht analysiert und das Steuerelement kehrt sofort zur Anwendung zurück. Wenn ein Modul required
ausfällt, wird der gesamte Stapel analysiert.
Jetzt kann ich nicht verstehen, wie es sich verhält, wenn ein bestimmtes Modul required
ausfällt und ein anderes Modul sufficient
erfolgreich ist.
quelle
required
Element fehlgeschlagen ist, warum mussPAM
der Stapel dann weiter durchlaufen werden? ob es doch endlich scheitern wird?Meiner Meinung nach muss ein
required
Kontrollflag immer erfolgreich sein, damit ein Modul erfolgreich ist.Ein
sufficient
markiertes Modul wird ignoriert, wenn es fehlschlägt. Wenn es erfolgreich ist und keine der oben genanntenrequired
markierten Module fehlgeschlagen sind, müssen keine anderen Module des gleichen Typs überprüft werden, und das Modul wird als erfolgreich angesehen. Im Grunde hat dasrequired
Flag eine höhere Priorität als dassufficient
Flag, aber das letztere hat die Möglichkeit, die Überprüfung der restlichen zu beenden, wenn die vorherigenrequired
erfolgreich waren.Beispiel:
Wenn die Zeilen 1, 2, 3 und 4 erfolgreich sind, kann die Zeile 5 übersprungen werden und das Modul
auth
ist erfolgreich. Wenn die Zeile 4 nicht erfolgreich ist, wird sie ignoriert und die Zeile 5 überprüft. Wenn eine der Zeilen 1, 2, 3 ausgefallen ist, wird die Zeile 4 nicht berücksichtigt.quelle