PAM 模块在 i386 上运行良好,但在 vsftpd 中使用时在 x64 上失败

PAM 模块在 i386 上运行良好,但在 vsftpd 中使用时在 x64 上失败

我们有一个自定义 PAM 模块,它在我们的 i386 开发机器上运行良好,但当我们尝试在 x64 生产服务器上使用 vsftpd 进行生产时,它失败了。PAM 模块已针对 x64 重新编译。

身份验证日志:

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

(注:我们有大量的可用内存)

系统日志:

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

我们不确定是什么导致了这个错误。有谁知道如何解决这个问题,或者对我们如何进一步调试它有什么建议吗?

答案1

在我发布此信息后,我设法解决了这个问题。原来 vsftpd 限制了可用的虚拟内存量,setrlimit(RLIMIT_AS, limit)我猜这在 32 位上没问题,但在 64 位上就耗尽了。我没有费心去寻找发生此问题的确切限制,但重新编译 vsftpd 并将VSFTP_AS_LIMITvsftpd 中的defs.h限制改为三倍,问题就解决了,PAM 模块运行良好。

相关内容