O Linux-PAM não pode usar o módulo PAM personalizado - possivelmente relacionado a multiarch

1

Eu criei um módulo PAM simples e personalizado, e o módulo funciona como esperado com o pamtester e com algum outro código de teste de pam que encontrei on-line.

Eu também construí um aplicativo simples dotnet core que usa pinvoke para autenticar contra o pam.

Como mencionado, o módulo personalizado funciona com o pamtester e o aplicativo dotnet personalizado funciona (até o ponto de receber o callback conv) contra a configuração padrão do pam do ubuntu 15.10.

No entanto, se eu ligar o aplicativo personalizado ao módulo PAM personalizado, recebo um erro no auth.log para dizer

dotnet: PAM unable to dlopen(pam_permit_log_response.so): 
/lib/security/pam_permit_log_response.so: cannot open shared object file: No    
such file or directory

... então ele não encontra o módulo no diretório / lib / x86_64-linux-gnu / security ao chamar pam do dotnet para o módulo customizado

Se eu alterar o arquivo de configuração pam para incluir o caminho completo para o módulo, obtenho o erro

dotnet: PAM unable to dlopen(/lib/x86_64-linux-
gnu/security/pam_permit_log_response.so): /lib/x86_64-linux-
gnu/security/pam_permit_log_response.so: undefined symbol: pam_syslog

Então, parece que ainda não está resolvendo as coisas, desta vez são as referências no módulo pam personalizado.

Alguém poderia me apontar na direção certa em termos de:

  • Por que o PAM não consegue encontrar meu módulo personalizado, mas pode encontrar os módulos ubuntu padrão?
  • Por que isso só acontece quando chamamos pam do dotnet
  • Como posso construir e / ou configurar meu módulo de pam personalizado para comportar-se da mesma forma que os módulos de sistema pré-existentes?
por CamW 22.07.2016 / 15:40

1 resposta

0

Ainda não sei por que é um problema chamar meu módulo personalizado do dotnet e não do pamtester, mas, para responder à pergunta mais importante: "Como posso construir e / ou configurar meu módulo pam personalizado para me comportar da mesma forma como os módulos pré-existentes do sistema? "

A resposta é que, anteriormente, eu estava vinculando o módulo usando o seguinte:

ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o

Para corrigir o problema, eu precisava indicar ao vinculador que este é um módulo pam usando o sinalizador -lpam para que a chamada para o link se torne:

ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o -lpam
    
por 12.08.2016 / 16:43