vsftpd的安装及使用
1.vsftpd的简介
vsftpd是“very secure TTP daemon”的缩写,是一个完全免费的、开放源代码的ftp服务器软件
2.vsftpd的安装
- 检查linux中是否安装了vsftpd
rpm -qa|grep vsftpd
- yum安装vsftpd
yum -y install vsftpd
- 查看安装路径
whereis vsftpd
3.创建一个虚拟用户用来操作vsftpd
- 添加一个用户以及密码
useradd ftpuser
password ftpuser 123456
- 创建一个用来存储上床文件的目录放在根目录下或者其他位置,注意要将目录的权限修改成757,不然报553 Could not create file错误
chomd 757 -R /ftpfile
4.配置文件
(yum安装vsftpd的默认配置文件在/etc/vsftpd/vsftpd.conf)
- local_root=/ftpfile #把本地账户指向创建的ftpfile文件夹
- anon_root=/ftpfile #添加匿名账户访问ftpfile目录
- use_localtime=YES #ftp服务器用到的是本地的时间
- #chroot_local_user=YES #这个节点为是否锁定创建的/ftpfile为根目录,不解除注释,默认为chroot_local_user=NO
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd/chroot_list
图片解释
7. allow_writeable_chroot=YES #加上这行解决了无法登陆的问题
8. 将该节点改为anonymous_enable=NO,不允许匿名用户登录
9. vsftpd文件上传有两种模式(默认)pasv(被动模式)和post(主动模式)
pasv_min_port=61001 #设置被动模式传输接口的范围
pasv_max_port=62000 #设置被动模式传输接口的范围
5.关闭防火墙
6.编写java测试代码
- 导入commons-net坐标
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
- 编写测试类
public static void testFtp() throws Exception {
// 1. 创建一个FtpClient对象
FTPClient ftpClient = new FTPClient();
// 2. 创建 ftp 连接
ftpClient.connect("39.96.44.2", 21);
// 3. 登录 ftp 服务器
ftpClient.login("ftpuser", "ftpuser");
// 4. 读取本地文件
FileInputStream inputStream = new FileInputStream(new File("C:\\Users\\22912\\Pictures\\bj.jpg"));
// 5. 设置上传的路径
//boolean b1 = ftpClient.changeWorkingDirectory("../usr/local/nginx/health_images");
// 6. 修改上传文件的格式为二进制
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// 7. 服务器存储文件,第一个参数是存储在服务器的文件名,第二个参数是文件流
ftpClient.enterLocalPassiveMode();
boolean b = ftpClient.storeFile("hello1.jpg", inputStream);
// 8. 关闭连接
ftpClient.logout();
}
注意:如果不加ftpClient.enterLocalPassiveMode();在测试时会一直卡主不动
有一些坑参考博客vsftpd使用时的一些坑