Назад | Перейти на главную страницу

Модуль PAM отлично работает на i386, но не работает на x64 при использовании в vsftpd

У нас есть собственный модуль PAM, который отлично работает на наших машинах разработки i386, но когда мы пытаемся использовать его в продакшене на наших серверах x64 с vsftpd, он терпит неудачу. Модуль PAM был перекомпилирован для 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 У нас огромное количество свободной памяти)

системный журнал:

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]

Однако, используя pamtester инструмент отлично работает:

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

Мы не уверены, что вызывает эту ошибку. Кто-нибудь знает, как решить эту проблему, или есть предложения о том, как мы могли бы ее отладить?

Сразу после того, как я опубликовал это, мне удалось решить эту проблему. Оказывается, vsftpd ограничивает объем доступной виртуальной памяти, используя setrlimit(RLIMIT_AS, limit) Думаю, это было нормально на 32-битной версии, но на 64-битной было утомительно. Я не удосужился найти точный предел, в котором возникает эта проблема, но перекомпилировал vsftpd и изменил VSFTP_AS_LIMIT в vsftpd defs.h утроение лимита устранило проблему, и модуль PAM работает отлично.