Como obter o status de autenticação da última execução do módulo PAM

1

Se eu tiver a seguinte pilha de PAM:

auth required default_pam.so
auth requisite my_custom_pam.so
....

Como você obtém o status de autenticação da última / anterior execução do módulo PAM para uso em seu próprio módulo de autenticação PAM personalizado (por exemplo, na função pam_sm_authenticate )?

    
por Dodzi Dzakuma 07.04.2014 / 09:54

1 resposta

1

Primeiro, tenha em mente que não é muito convencional que a lógica de código do seu módulo seja alterada de acordo com os resultados de outros módulos: isso geralmente é feito usando sinalizadores de controle, como required e requisite , que controlam quais módulos ser chamado, em que situações (ou seja, de acordo com o status atual da cadeia, os resultados dos módulos anteriores). Com isso em mente, você pode imaginar adaptar o comportamento do seu módulo desta maneira:

auth [success=1] default_pam.so
auth [success=done default=die] my_custom_pam.so default_failed
auth requisite my_custom_pam.so

Essa cadeia tem a seguinte lógica:

  • Se o módulo padrão for bem-sucedido, marque-o como validado (implícito por success=1 ) e ignore 1 módulo. A cadeia alcança my_custom_pam chamado sem argumento, o que terá que ser bem-sucedido ( requisite ).
  • Se o módulo padrão falhar, não pule nada. A cadeia alcança my_custom_pam , chamado com um argumento, default_failed . A cadeia parará após este módulo ( done ou die ) e determinará o resultado geral.

Aqui, o elemento-chave é o argumento passado para my_custom_pam . Ao verificar argc e argv na sua rotina pam_sm_authenticate , você poderá adaptar sua lógica de acordo com o status atual da cadeia.

    
por 29.04.2015 / 11:21