Módulo PAM funciona bem em i386 mas falha em x64 quando usado em vsftpd

1

Temos um módulo PAM personalizado que funciona bem em nossas máquinas de desenvolvimento i386, mas quando tentamos usá-lo na produção em nossos servidores de produção x64 com o vsftpd ele falha. O módulo PAM foi recompilado para x64.

auth.log:

Nov 12 18:29:06 [removed] vsftpd: PAM unable to dlopen(/lib/x86_64-linux-gnu/security/pam_databowl.so): libcrypt.so.1: failed to map segment from shared object: Cannot allocate memory

(n.b Temos uma quantidade enorme de memória livre)

syslog:

Nov 12 18:29:06 [removed]  kernel: [13831373.215161] vsftpd[6955]: segfault at 968 ip 00007fc50dabc8f0 sp 00007fff755e1a30 error 4 in libpthread-2.15.so[7fc50dab6000+18000]

No entanto, usando a ferramenta pamtester , ela funciona bem:

[removed]:~/pamtester-0.1.2/src$ ./pamtester vsftpd.databowl <removed> authenticate
Password: 
pamtester: successfully authenticated

Não temos certeza do que está causando esse erro. Alguém sabe como resolver isso ou tem alguma sugestão sobre como podemos depurá-lo ainda mais?

    
por Tomdarkness 12.11.2013 / 19:55

1 resposta

3

Logo depois que postei isso, consegui resolvê-lo. Acontece que o vsftpd limita a quantidade de memória virtual disponível usando setrlimit(RLIMIT_AS, limit) Eu acho que isso foi bom em 32 bits, mas estava esgotando isso em 64 bits. Eu não me preocupei em encontrar um limite exato onde este problema ocorre, mas recompilar o vsftpd e alterar VSFTP_AS_LIMIT no defs.h do vsftpd para triplicar o limite removeu o problema e o módulo PAM está funcionando muito bem.

    
por 12.11.2013 / 20:11