FTP相关配置及备忘

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(可插式授权管理器)上面了。我的原因是因为使用了64位的系统,而使用的PAM文件,/etc/pam.d/vsftpd文件中的模块路径为/usr/lib/pam_*目录,在网上搜得的网友说使用相对路径,也就是去掉前面的路径就可以了。这让我想到了系统的区别,核实了一下,相关模块文件在/usr/lib64下有很多,而/usr/lib只有一个,这正是本问题的关键所在。

关于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项。



版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/yin138/p/4902260.html