1、vsftpd 530 Login incorrect.
这个问题在网上找到很多资源,GOOGLE搜索到第6页时终于找到一个可行方案。
配置/etc/pam.d/vsftpd文件的路径为动态库真实路径,如果该文件不存在,请参考vsftpd安装路径下的文件,或者如下内容也可:
#%PAM-1.0 auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unix.so shadow nullok auth required /lib64/security/pam_shells.so account required /lib64/security/pam_unix.so session required /lib64/security/pam_unix.so
关于PAM这个文件的名称需要与pam_service_name相同,这里有网友说需要使用绝对路径,这个可能与配置有关,可以一试,绝对路径是绝对没问题的。
如果从外部访问,需要关注linux上的防火墙,以及相关SELinux。
2、Serv-U 使用中文路径和中文文件名
Serv-U支持在路径上使用UTF8编码,一般为缺省配置,如果FTP客户端不使用UTF8编码这种方式,那可能就得不到正确的中文路径解析,如果使用apache的开源包FTPClient之类的客户端时需要将编码转换成UTF8才可以查看到中文路径,上传中文路径或者文件名时,同样要进行编码转换,除非你的工程缺省就是使用UTF8编码。
有两种方式:(a) 修改服务器的配置 (b) 发送关闭UTF8解析关闭命令 "OPTS UTF8 OFF"
3、vsftpd使用中文路径和中文文件名
vsftpd支持OPTS UTF8 ON,该命名返回“Always support UTF8”,但使用"OPTS UTF8 OFF“时,将不识别命令。可见这里与Serv-U还是有区别的,本人在linux上使用UTF8编码,传输也无法使得可以查看到中文文件名,但在GBK环境下可以看到使用GBK的中文名称,我估计可能是字体原因,导致不能正确显示UTF8中文编码。
我采取的方法就是服务器使用GBK,即LANG=zh_CN.UTF8,上传时使用控制端编码,即FTPClient.getControlEncoding()函数来转换文件名编码,这样上传之后在linux上可以识别中文,而且在IE,Firefox上都可以识别,编码为GB2312。
4、vsftpd在IE下访问时失败
我实验发现IE只支持ASCII模式,而vsftpd缺省是关闭ASCII模式的,而firefox确可以在关闭ASCII模式下访问,而且IE访问时,在被动模式下无法使用公网IP,也就是不支持路由的情况。因为我的环境是:
公网IP访问FTP,被动模式下,返回给客户端的IP是内网IP,这个进修IE无法访问,而firefox可以访问。(我对IE的无语)。
还有要关注一点就是如果IE使用公网IP的情况下访问了vsftpd服务器,并且出现了错误时,将导致vsftpd服务器挂掉,必须重启!!!好恶心的IE啊!我怀疑是因为IE访问时,出现公网与私网IP时出现了错误,而占用了服务器的FTP被动端口,导致服务器挂掉。
5. 425 Security: Bad IP Connection
该错误就是出现在公网IP与内网IP的情况下访问vsftpd服务器,而服务器设置了IP检查机制。这个需要修改/etc/vsftpd.conf文件的pasv_promiscuous=YES项。