1、安装
yum -y install vsftpd
2、配置文件详解
安装后配置文件位于/etc/vsftpd
vsftpd.ftpusers:该文件中用户账户不能访问FTP服务器,例如root等。
vsftpd.user_list:该文件中用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:该文件自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
3、启动ftp
systemctl start vsftpd.service
4、允许root用户连接的示例
修改/etc/vsftpd/ftpusers文件,将root用户注释掉
修改/etc/vsftpd/user_list文件,将root用户注释掉
重新启动服务:service vsftpd restart
5、防火墙开放ftp服务
为了方便的测试功能,我们本地环境的防火墙通常是关闭的,这样ftp不会被防火墙拦截。但是,生产环境中防火墙肯定是运行的。这就需要配置ftp不被防火墙拦截,配置方法如下:
firewall-cmd --add-service=ftp --permanent #防火墙中开启ftp服务,永久生效
firewall-cmd --reload #重新加载,使上面的配置立即生效
firewall-cmd --query-service ftp #查询是否设置成功,如果返回yes则成功
直接在直接电脑上查看:
6、java程序上传文件被拦截
做完上面的设置,浏览器中访问是没问题了,可是用java程序上传文件到ftp不会成功,返回false,代码如下:
Boolean isSuccess = ftpClient.storeFile(file.getName(),FileUtil.file2InputStream(file));//保存文件
这时需要做如下检查,如果返回如下,都是off。则需要设置ftpd_full_access为on
getsebool -a | grep ftp
setsebool -P allow_ftpd_full_access on
设置完后,java上传成功!