Eu escrevi um módulo de serviço PAM
e o adicionei em lightdm
editando /etc/pam.d/lightdm
.
Mas lightdm
reclama (em /var/log/auth.log
no Ubuntu 14.04):
Sep 9 14:16:48 Ubuntu-build lightdm: PAM unable to dlopen(pam_my.so): /lib/security/pam_my.so: cannot open shared object file: No such file or directory
Quando eu olho para o que está acontecendo via strace()
, ao contrário da mensagem de log, é encontrando e abrindo meu módulo PAM
, e começando a inspecioná-lo, mas ele desiste e continua procurando por ele em outros diretórios, reclamando que não conseguiu encontrá-lo. Aqui está um exemplo de saída:
12230 open("/lib/x86_64-linux-gnu/security/pam_my.so", O_RDONLY|O_CLOEXEC) = 4
12230 read(4, "7ELFSep 9 14:16:48 Ubuntu-build lightdm: PAM unable to dlopen(pam_my.so): /lib/security/pam_my.so: cannot open shared object file: No such file or directory
12230 open("/lib/x86_64-linux-gnu/security/pam_my.so", O_RDONLY|O_CLOEXEC) = 4
12230 read(4, "7ELF%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%00\f%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832
12230 fstat(4, {st_mode=S_IFREG|0644, st_size=17728, ...}) = 0
12230 mmap(NULL, 2105544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7fe087ebe000
12230 mprotect(0x7fe087ec0000, 2093056, PROT_NONE) = 0
12230 mmap(0x7fe0880bf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x1000) = 0x7fe0880bf000
12230 close(4) = 0
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%00\f%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832
12230 fstat(4, {st_mode=S_IFREG|0644, st_size=17728, ...}) = 0
12230 mmap(NULL, 2105544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7fe087ebe000
12230 mprotect(0x7fe087ec0000, 2093056, PROT_NONE) = 0
12230 mmap(0x7fe0880bf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x1000) = 0x7fe0880bf000
12230 close(4) = 0
Em um caso de trabalho (por exemplo, pam_unix.so
) em vez de close()
, ele continua com outro mmap()
e, em seguida, continua. Eu olhei em todos os logs em /var/log/*
e não consigo encontrar mais informações para me dizer com o que o PAM
está insatisfeito. Eu nem sei a fonte que eu poderia olhar para diagnosticar o que está errado. O módulo parece estar construído corretamente. Eu li o Module Writers Guide
e acho que estou seguindo todas as regras corretas. Alguma pista de como proceder para diagnosticar isso?
Eu também tentei tocar em /etc/pam_debug
, mas isso não forneceu nenhuma mensagem de log útil.