Como usar corretamente o PAM para executar um script após falha de login

1

Estou tentando usar o Pluggable Authentication Module para executar um script quando o login falha no meu sistema Arch Linux. O Arch Linux não possui um arquivo common-auth e eu decidi não criar um. Em vez disso, descobri que a pilha do PAM usa o arquivo system-auth para algumas funcionalidades e decidi editá-lo.

O arquivo de autenticação do sistema original era o seguinte

#%PAM-1.0

auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so


Para executar o script quando o login falha, mudei o bloco auth como segue

auth      [success=1 default=ignore]  pam_unix.so     try_first_pass nullok
auth      optional  pam_exec.so <path to the script file>
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so

O comando sudo é um comando que usa esse arquivo system-auth na pilha PAM do meu sistema. No entanto, quando tento usar o comando sudo depois de editar o arquivo como acima, o comando sudo é executado mesmo se eu digitar a senha incorreta.

Agradeceria se alguém pudesse me dizer o que está errado aqui e me ajude a corrigi-lo

    
por Nilushan 28.02.2017 / 06:44

1 resposta

1

De man pam.d , a descrição de required :

required
   [success=ok new_authtok_reqd=ok ignore=ignore default=bad]

Com default=ignore , a falha de pam_unix não leva mais a falha de autenticação, já que seu script e, em seguida, pam_permit.so serão usados e pam_permit.so sempre será bem-sucedido. pam_unix ainda deve ter default=bad :

bad
   this action indicates that the return code should be thought of as
   indicative of the module failing. If this module is the first in
   the stack to fail, its status value will be used for that of the
   whole stack.
    
por 02.03.2017 / 10:14