Estoy estudiando PAM, y no tengo ni idea del significado de alguna combinación de banderas de control. De la documentación de Red Hat tenemos:
La
falla requerida de tal PAM conducirá en última instancia a la falla de retorno de PAM-API, pero solo después de que se hayan invocado los módulos apilados restantes (para este tipo y servicio)requisite
como se requiere, sin embargo, en el caso de que un módulo de tales devuelve un error, el control se devuelve directamente a la aplicación.suficiente
éxito de dicho módulo es suficiente para satisfacer los requisitos de autenticación de la pila de módulos (si un módulo requerido anteriormente ha fallado, se ignora el éxito de este). Una falla de este módulo no se considera fatal para satisfacer la aplicación que este tipo ha tenido éxito. Si el módulo tiene éxito, el marco PAM devuelve el éxito a la aplicación inmediatamente sin probar ningún otro módulo.
Entonces, según tengo entendido, si un módulo requisite
falla, no se analizará toda la pila de módulos y el control volverá a la aplicación de inmediato. Si un módulo sufficient
tiene éxito, el resto de la pila de módulos no se analizará y el control volverá a la aplicación de inmediato. Si un módulo required
falla, se analizará toda la pila.
Ahora, no puedo entender cuál será el comportamiento cuando un determinado módulo required
falla y otro módulo sufficient
tiene éxito.
fuente
required
falla algún elemento, ¿por qué esPAM
necesario seguir pasando por la pila? si finalmente fallará de todos modos?En mi opinión, un
required
indicador de control debe ser siempre exitoso para que un módulo sea exitoso.Un
sufficient
módulo marcado se ignora si falla. Si es exitoso y ningúnrequired
módulo marcado anteriormente ha fallado, no es necesario verificar otros módulos del mismo tipo y el módulo se considera exitoso. Básicamente, larequired
bandera tiene mayor prioridad que lasufficient
bandera, pero la última tiene la capacidad de dejar de verificar el resto si las anterioresrequired
tuvieron éxito.Ejemplo:
Si las líneas 1, 2, 3 y 4 son exitosas, entonces la línea 5 puede saltarse y el módulo
auth
es exitoso. Si la línea 4 no tiene éxito, se ignora y se marca la línea 5. Si alguna de las líneas 1, 2, 3 ha fallado, entonces la línea 4 no se tiene en cuenta.fuente