Linux

PAM 模組在 i386 上工作正常,但在 vsftpd 中使用時在 x64 上失敗

  • March 1, 2016

我們有一個定制的 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

(nb 我們有大量的可用記憶體)

系統日誌:

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 模組執行良好。

引用自:https://serverfault.com/questions/554517