centos x64 vsftpd 530登陆错误问题

近来在centos 6.0 x64版本下安装vsftpd,中间出现一些问题,解决过程总结如下:

安装vsftpd:yum install vsftpd

安装后配置为虚拟用户登陆,然后用:ftp localhost

登陆测试

总是出现错误提示:

530 Login incorrect.

Login failed.

google了一下,普遍的解决办法是:在/etc/vsftpd/vsftpd.conf中添加

pam_service_name=vsftpd

这是为了解决pam与vsftpd配合问题,可以查看/etc/pam.d目录下,是有一个vsftpd文件的,这个文件是vsftpd的pam配置文件,pam_service_name=vsftpd中的vsftpd要与/etc/pam.d目录下的vsftpd配置文件名相同。

在vsftpd.conf中添加了pam_service_name=vsftpd后,依然出现530 Login incorrect错误

于是再搜索,看到一种说法是由于是x64系统,所以在/etc/pam.d/vsftpd中要用:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db

解决库文件的连接问题,我原先的配置是:

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login.db

account required pam_userdb.so db=/etc/vsftpd/vsftpd_login.db

因为我认为这样会默认在/lib64目录中找库文件的,但是为了保险起见,还是更改为/lib64/security/pam_userdb.so

更改后还是继续530 Login incorrect错误

于是想到了看日志文件

/var/log/vsftpd.log

我这里没有这个文件

查看:/var/log/secure

在里面找到了有用的信息:

pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd/vsftpd_login.db': No such file or directory

意思是找不到vsftpd_login.db这个文件,但是实际上是有这个文件的,于是在网上搜索了一下,问题在于:/etc/pam.d/vsftpd文件中

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db

pam在查找vsftpd_login.db文件时,会自动在设置的db文件名vsftpd_login.db后增加一个“.db”后缀,于是,根据配置文件,pam实际上查找的是vsftpd_login.db.db文件,所以就找不到这个文件了,于是修改为:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

重新启动vsftpd后,登陆正常了

以上是解决过程,记录备查

http://blog.chinaunix.net/uid-26919810-id-3189612.html