centos x64 vsftpd 530登陆错误的解决方法

发布时间:2019-10-18编辑:脚本学堂
centos 6.0 x64版本下安装vsftpd,中间出现一些问题,解决过程总结如下,供遇到类似问题的朋友参考。

centos 6.0 x64版本下安装vsftpd,中间出现一些问题,解决过程总结如下,供遇到类似问题的朋友参考。

安装vsftpd:yum install vsftpd
安装后配置为虚拟用户登陆,然后用:ftp localhost
登陆测试
总是出现错误提示:
530 Login incorrect.
Login failed.

网上给出的普遍的解决办法是:在/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后,登陆正常了。

good baby,成功解决了,记录在此,以备后阅。