FTP服务器的搭建

1、什么时ftp

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

2、介绍

在学习如何构建FTP服务器之前,首先应对FTP的工作原理、服务器端软件有一个基本的认识。

2.1.FTP服务器概述

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用于建立数据连接,并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令。根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式,两者的含义及主要区别如下:

主动模式:服务器主动发起数据连接。

被动模式:服务器被动等待数据连接。

当客户端与服务器建立好数据连接以后,就可以根据从控制连接中发送的FTP命令上传或下载文件了。在传输文件时,根据是否进行字符转换,分为文本模式和二进制模式。

文本模式:又称为ASCII(American Standard Code for Information Interchange,美国信息交换标准码)模式,这种模式在传输文件时使用ASCII标准字符序列,一般只用于纯文本文件的传输。

二进制模式:又称为Binary模式,这种模式不会转换文件中的字符序列,更适合传输程序、图片等非纯文本字符的文件。使用二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,而无需用户手工指定。

2.2.FTP用户类型

匿名用户:anonymous 或 ftp,提供任意密码(包括空密码)都可以通过服务器的验证,一般用于提供公共文件的下载。本地用户:直接使用本机的系统用户,账号名称、密码等信息保存在 passwd、shadow 文件中。虚拟用户: 使用独立的账号/密码数据文件,将FTP账户与系统账户的关联性降至最低,可以为系统提供更好的安全性。

2.3.FTP服务器软件的种类

在Windows系统中,常见的FTP服务器软件包括FileZilla Sener、Serv-U、IIS等;而在Linux系统中,vsftpd是目前在Linux/UNIX领域应用十分广泛的一款FTP服务软件。

Vsftpd服务的名称来源于“Very Secure FTP Daemon”,该软件针对安全性方面做了大量的设计。除了安全性以外,vsftpd在速度和稳定性方面的表现也相当突出,大约可以支持15000个用户并发连接。

2.4.FTP客户端工具的种类

ftp命令程序:是最简单的FTP客户端工具,Windows和Linux都拥有ftp命令程序,可以连接到FTP服务器进行交互式的上传、下载通信。图形化FTP客户端工具:Windows中较常用的包括CuteFTP、FlashFXP、LeapFTP、Filezilla等,在图形化的客户端程序中,用户通过鼠标和菜单即可访问、管理FTP资源,而不需要掌握FTP交互命令,更易于使用。下载工具:FlashGet、Wget等,包括大多数网页浏览器程序,都支持通过FTP协议下载文件,但因不具备FTP上传管理功能,通常不称为FTP客户端工具。

3、安装vsftpd

2.1下载,我们通过yum下载

yum install -y vsftpd

安装完成后我们可以看到

/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件


/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。  黑名单


/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。  白名单

 

/etc/vsftpd/chroot_list:指定允许使用vsftpd 的用户列表文件。  控制名单下的目录能不能离开ftp根目录

 

 

2.2vsftpd.conf具体配置如下:

anonymous_enable=NO  #允许匿名用户访问为了安全选择关闭
local_enable=YES   # 允许本地用户登录
write_enable=YES   # 是否允许写入
local_umask=022  # 本地用户上传文件的umask
dirmessage_enable=YES #为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
xferlog_enable=YES #开启日志

xferlog_std_format=YES #标准格式
connect_from_port_20=YES
xferlog_file=/var/log/xferlog   #ftp日志目录

idle_session_timeout=6000 #设置客户端连接时间

data_connection_timeout=1200 #设置数据连接时间 针对上传,下载
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #设置为YES则下面的控制有效
chroot_list_enable=YES #若为NO,则记录在chroot_list_file所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里YES.
chroot_local_user=YES
userlist_deny=NO #若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
userlist_enable=YES #若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
userlist_file=/etc/vsftpd/user_list #白名单
chroot_list_enable=YES
local_root=/var/ftp/pub #根目录
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

2.3关闭防火墙

centoos 7操作为systemctl stop firewalld.service 

2.4启动ftp服务器

cetoos 7操作为/bin/systemctl restart  vsftpd.service

2.5赋权,将ftp指定的根目录赋权为777权限

chmod 777 /var/ftp/pub

2.6检查SElinux状态并关闭

 getsebool -a|grep ftp

(“安全增强型Linux(SELinux)是专门为Linux内核制作的安全模块,它支持访问控制安全策略的功能,包括强制访问控制(MAC)。它于1998年1月发布,采用C编程语言编写。”)

2.7测试匿名 FTP 服务器

我们使用FlashFPX下载路径

https://www.cr173.com/soft/15632.html

减压以后打开

我们建立连接

连接成功就可以将文件进行上传和下载了。

可能存在的问题:出现550不能上传不能下载的时候,我们需要在linux中给我们的用户权限

chmod 777 -R /home/ftpuser

这样我们的ftp服务器就搭建好了

 

我们用JAVA-API进行连接

public class ftpTest {
    @Test
    public void testFtpClient() throws Exception, IOException {
        //创建ftpClient对象
        FTPClient ftpClient = new FTPClient();
        //创建ftp连接,默认是21端口
        ftpClient.connect("hdp-4",21);
        //登陆ftp服务器,使用用户名和密码
        ftpClient.login("ftpuser", "123456");
        //上传文件
        //读取本地文件
        FileInputStream inputStream = new FileInputStream(new File("C:\\Users\\yl\\Desktop\\1.gif"));
        //设置上传的路径
        ftpClient.changeWorkingDirectory("/home/ftpuser/health/");
        //修改上传文件的格式(默认传输是文本格式)(需二进制格式)
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        //第一个参数:服务器文档名
        //第二个参数:上传文档的inputStream
        ftpClient.storeFile("health", inputStream);
        //关闭连接
        ftpClient.logout();
    }
}

结果:

以上可能存在问题,望见谅。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值