Estou estudando PAM e sou um pouco ignorante sobre o significado de alguma combinação de sinalizadores de controle. Da documentação da Red Hat, temos:
a
falha necessária de tal PAM levará à falha de retorno da API do PAM, mas somente após a invocação dos módulos empilhados restantes (para este serviço e tipo)requisito
como necessário, no entanto, no caso em que tal módulo um retorna uma falha, o controlo é devolvido directamente para a aplicação.o
sucesso suficiente desse módulo é suficiente para satisfazer os requisitos de autenticação da pilha de módulos (se um módulo exigido anteriormente falhar, o sucesso deste módulo será ignorado). Uma falha deste módulo não é considerada fatal por satisfazer o aplicativo que esse tipo teve êxito. Se o módulo for bem-sucedido, a estrutura do PAM retornará o sucesso ao aplicativo imediatamente sem tentar outros módulos.
Portanto, no meu entendimento, se um módulo requisite
falhar, toda a pilha de módulos não será analisada e o controle voltará ao aplicativo imediatamente. Se um módulo sufficient
for bem-sucedido, o restante da pilha de módulos não será analisado e o controle retornará ao aplicativo imediatamente. Se um módulo required
falhar, a pilha inteira será analisada.
Agora, não consigo entender qual será o comportamento quando um determinado módulo required
falhar e outro módulo sufficient
for bem-sucedido.
fonte
required
item falhou, por quePAM
precisa continuar avançando na pilha? se finalmente vai falhar mesmo assim?Na minha opinião, um
required
sinalizador de controle deve ser sempre bem-sucedido para que um módulo seja bem-sucedido.Um
sufficient
módulo sinalizado é ignorado se falhar. Se for bem-sucedido e nenhumrequired
módulo sinalizado acima falhar, nenhum outro módulo do mesmo tipo deverá ser verificado e o módulo será considerado bem-sucedido. Então, basicamente, orequired
bandeira tem prioridade mais alta que asufficient
bandeira, mas a última tem capacidade de parar de verificar o restante deles, se os anteriores tiveremrequired
sucesso.Exemplo:
Se as linhas 1, 2, 3 e 4 forem bem-sucedidas, a linha 5 poderá ser pulada e o módulo
auth
bem-sucedido. Se a linha 4 não for bem sucedida, ela será ignorada e a linha 5 será verificada. Se alguma das linhas 1, 2, 3 falhar, a linha 4 não será levada em consideração.fonte