近来在centos 6.0 x64版本下安装vsftpd,中间出现一些问题,解决过程总结如下:
安装vsftpd:yum install vsftpd
安装后配置为虚拟用户登陆,然后用:ftp localhost
登陆测试
总是出现错误提示:
530 Login incorrect.
Login failed.
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
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
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文件,所以就找不到这个文件了,于是修改为:
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
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
重新启动vsftpd后,登陆正常了
以上是解决过程,记录备查
http://blog.chinaunix.net/uid-26919810-id-3189612.html