pam: ação no login (sem sucesso)

5

Eu sei como executar uma ação no login, adicionando uma linha a /etc/profile . Mas isso só é executado se o login for bem sucedido. Eu gostaria de ter ação executada mesmo quando o login falhar. Por exemplo, execute um script script.sh .

Eu suspeito que isso pode ser configurado em pam , mas não tenho ideia de por onde começar.

    
por Martin Vegter 18.08.2013 / 09:48

1 resposta

9

Você pode fazer isso com pam_exec module e alguns PAM trickery. A configuração PAM é geralmente muito diferente nas distribuições, então você terá que entender sua configuração e tentar ajustá-la.

Para o Debian (testado com 7.1) edite /etc/pam.d/common-auth (comentários deixados de fora para maior clareza)

  • antes

    auth    [success=1 default=ignore]    pam_unix.so nullok_secure
    auth    requisite                     pam_deny.so
    auth    required                      pam_permit.so
    
  • depois

    auth    [success=2 default=ignore]    pam_unix.so nullok_secure
    auth    optional                      pam_exec.so /common-auth-pam_exec
    auth    requisite                     pam_deny.so
    auth    required                      pam_permit.so
    

O que realmente está acontecendo, é que no caso de pam_unix.so ser bem-sucedido, ele irá pular 2 módulos seguintes e pular para o pam_permit.so que sempre terá sucesso. Em caso de falha de autenticação PAM continua com a execução do nosso script primeiro, seguido por pam_deny . Esse sempre falhará, e porque ele tem requisite flag flag set nenhum outro módulo será executado.

Para fins de conclusão, o programa gerado por pam_exec é executado com o ID do usuário real do processo de chamada (a opção setuid o faz executar com um ID de usuário efetivo) e o ambiente de processo é semelhante a este

PAM_SERVICE=login
PAM_RHOST=
PAM_USER=<username_here>
PAM_TYPE=auth
PAM_TTY=/dev/tty1
    
por 18.08.2013 / 20:17

Tags