根据上一篇 《我见过最好的vsftpd配置教程》教程配置vsftpd时,在最后测试时出现530 login incrrect 提示,无法登陆。
查看日志 tail -n 20 /var/log/secure 有如下信息
Oct 21 14:19:40 www vsftpd: PAM unable to dlopen(/lib/security/pam_userdb.so)
Oct 21 14:19:40 www vsftpd: PAM [error: /lib/security/pam_userdb.so: wrong ELF class: ELFCLASS32]Oct 21 14:19:40 www vsftpd: PAM adding faulty module: /lib/security/pam_userdb.so
Oct 21 14:19:40 www vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Oct 21 14:19:40 www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=kanecruise rhost=60.55.8.102
Oct 21 14:19:40 www vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user kanecruise
很明显是 /lib/security/pam_userdb.so这个载入失败。
我检查本地机器
pam.i386 0.99.6.2-6.el5_5.2 installed
pam.x86_64 0.99.6.2-6.el5_5.2 installed
两种都已经安装,到底是载入的哪个,哪个载入失败呢?
我机器是64位的,猜想应该是要载入pam.x86_64
cat /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
就是这里 /lib/security/pam_userdb.so 文件载入失败,这个文件存在问题。
[root@www kanecruise]# ls /lib
lib/ lib64/
根目录存在此两个问题,尝试把lib改为 lib64并确认 /lib/security/pam_userdb.so 此文件存在。
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
保存重启vsftpd服务。
重新测试,登陆成功了。