前言
在前面的文章中我们已经介绍过在linux下怎么安装vsftp,对于ftp,有两种模式:主动模式和被动模式。一般默认安装完,是主动模式,即可以进行ftp连接和上传下载数据。在有些情况下,虽然我们能够连接上ftp,但我们无法进行数据的传输,这时候就是模式选择出了问题。
什么情况下选择被动模式?
如果把FTP服务器部署在防火墙或者NAT服务器的背后,则采用主动操作模式的客户端只能够建立命令连接而无法进行文件传输,如果部署FTP服务器后你发现只能浏览而不能上传下载文件时,一般情况下应该选择被动模式。
如何设置被动模式?
1.从防火墙层面
在selinux和防火墙层面应开放被动模式必需端口:21、30000-30999(开放1000个端口用于被动模式调用),下附shell脚本示意图(早前期文章中已有介绍)。
2.在配置上
anonymous_enable=NO //关闭匿名用户登录,为设置允许登录的用户提供前提。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
以上两条配置规定了受访用户文件,在chroot_list里写入受访用户。
pam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESpasv_min_port=30000pasv_max_port=30999
以上引用片段是被动模式参数必须。
3.在Java语言上
如果我们已经确认配置好了被动模式的ftp,那么在java连接ftp的操作类中,就不能再使用主动模式进行操作了,否则也是无法进行上传和下载。怎么办呢?ftp.enterLocalPassiveMode();这句就是java语言里进入被动模式的设置,这句话很关键。
结语
如果你正在学习ftp这方面的内容,不妨自己动手安装配置一下,相信会有很多未知的问题,把怎么解决的总结下来,我们一起探讨交流。