Finaliza o processamento de pam em um certo ponto com pam_exec

2

Estou escrevendo regras de pam personalizadas para restringir / definir como os usuários podem fazer login no meu host linux através do console serial.

Se o usuário guest efetuar login, desejo que sua senha seja verificada por pam_unix.so , enquanto que, para qualquer outro usuário, eu quero que meu programa de autenticação personalizado execute a mesma tarefa e ser a palavra final sobre autenticação , ou seja, não quero que nenhum módulo pam subseqüente seja invocado.

Aqui está meu arquivo /etc/pam.d/login de trabalho mínimo.

# On success skip the next rule
auth [success=1 default=ignore] pam_succeed_if.so user in guest
auth [success=done default=ignore] pam_exec.so expose_authtok /usr/bin/custom-pam.sh
auth [success=1 default=ignore] pam_unix.so nullok 
auth requisite pam_deny.so
auth required pam_permit.so

A configuração acima funciona como esperado quando eu fizer login como convidado (e /var/log/journal também confirma isso), mas falha para outros usuários.

Se /usr/bin/custom-pam.sh sair com 0, espero que o processamento de outros módulos pare. Pelo que entendi, success=done deve retornar imediatamente, mas isso não está acontecendo.

    
por linuxfan 26.09.2017 / 00:42

1 resposta

2

Já experimentou o controle PAM sufficient ? Por pam.conf(5)

   sufficient
       if such a module succeeds and no prior required module has failed
       the PAM framework returns success to the application or to the
       superior PAM stack immediately without calling any further modules
       in the stack. A failure of a sufficient module is ignored and
       processing of the PAM module stack continues unaffected.

Isso deve interromper o processamento na sua linha personalizada:

auth sufficient pam_exec.so expose_authtok /usr/bin/custom-pam.sh

a menos que falhe, o que poderia ser tratado por uma linha subseqüente de não negar-você-aqui-aqui.

    
por 26.09.2017 / 00:51

Tags