文件共享服务——FTP协议

本文介绍了FTP协议的工作机制,包括主动和被动模式,以及在LinuxCentOS环境下安装、配置和管理FTP服务器(vsftpd)的过程,详细解读了vsftpd.conf中的常见配置选项。

FTP(File Transfer Protocol),即文件传输协议,是基于TCP/IP协议簇的应用层协议之一。它的主要功能是文件的传输。FTP也是一个C/S架构。数据传输格式主要以二进制和文本为主。客户端可通过资源管理器或者命令行访问ftp服务器。FTP部署简单、访问起来也简单。

一、FTP通信方式

        FTP采用的是双通道协议,就是客户端和服务器完成文件的传输需要双方开启两个端口,一个通道用于传输命令,一个通道用于传输数据。在服务器端口21通常用来传送命令等控制信息,20端口用来传送数据。

        FTP有两种模式(站在服务器角度),分别为主动(PORT)模式和被动(PASV)模式。

(1).主动模式

在主动模式下,服务器向客户端传输数据。整个过程为:客户端的随机端口向服务器的21端口发送连接命令,完成三次握手之后服务器开启数据传送端口20,主动向客户端数据传送端口发送连接请求。而客户端数据传送端口的端口号,在建立命令通道后客户端向服务端就告知给了服务器。

(2).被动模式

在被动模式下,客户端向服务器传输数据。整个过程为:客户端的随机端口向服务器的21端口发送连接命令,完成三次握手之后服务器通过命令通道将自己的数据传送端口号发给客户端,而后等待客户端数据传送端口发送连接请求。

而服务器的数据传输端口号的格式为:  ip,端口高字节,端口低字节

例如 在被动模式下, 172,16,0,1,224,59  ,服务器的数据端口号就为 224*256+59

注意:主动模式和被动模式都有自己的特点。在主动模式下,服务器向客户端数据要考虑客户端防火墙问题。在被动模式下,要考虑服务器的防火墙问题,企业服务器通常是用硬件防火墙,可以利用防火墙的连接跟踪功能,可以通过分析得出客户端和服务器在命令通道中的数据传输端口号。

二、构建FTP服务器(Linux 环境 CentOs)

(1) 登录root,服务器安装FTP

yum -y install vsftpd 

(2) 服务器启停FTP服务

service vsftpd start #启动

systemctl start vsftpd.service   #启动
systemctl stop vsftpd.service    #关闭
systemctl restart vsftpd.service  #重启
systemctl enable vsftpd.service  #开机自启

(3).检查服务连接情况

ss -ntl  #获取 socket 统计信息

 可以看见21端口已经开启

(4)修改FTP的配置文件:在/etc/ 目录下,通常是/etc/vsftpd/vsftpd.conf

具体常用配置信息见目录三。

(5)在root下建立ftp专属用户

#新增用户
useradd -d /home/ftpusr ftpusr
#为ftp用户设置密码
passwd ftpuser
#设置拥有文件权限
chown -R ftpuser:ftpuser /home/ftpuser
#建立用户组
groupadd application
#向组内加入用户
usermod -a ftpuser -G application

(6) 设置目录权限

setfacl -m  u:ftp:rwx  /var/ftp/pub/

三、vsftpd.conf常见配置。

/etc/vsftpd/vsftpd.conf配置信息

说明 配置示例/备注
修改命令端口,默认21listen_port=2121ftp 10.0.0.8 2121
修改主动模式端口,默认为20ftp_data_port=20
修改被动模式端口区间底pasv_min_port
修改被动模式端口区间顶pasv_max_port
是否使用当地时间 use_localtime=YESYES为北京时间,NO为Linux(默认)
支持匿名用户登录anonymous_enable=YESCentOS8 不支持
匿名用户忽略口令检查no_anon_password=YES 默认为no
匿名用户上传anon_upload_enable=YES
匿名用户建目录anon_mkfir_wirte_enable=YES
只允许匿名用户下载全员可读的文件anon_world_readable_only=YES
匿名用户上传文件umask的默认值anon_umask=0333默认077
可删除和修改上传的文件anon_other_write_enable=YES
指定匿名用户上传文件的所有者进行修改chown_uploads=YES默认NO
指定修改匿名用户上传文件的所有者chown_username=wang默认ftp
指定修改匿名用户上传文件的权限chown_upload_mode=0644
允许linux用户登录local_enable=YES
允许linux用户上传文件write_enable=YES
linux系统用户上传文件的默认权限local_umask=022
所有系统用户都映射成guestguest_enable=YES
指定guest用户guest_username=ftp
guest用户登录目录local_root=/ftproot
限定所有用户只能访问自己的用户目录chroot_local_user=YES
启用限定列表chroot_list_enable=YES
设置限定列表文件名chroot_list_file=/etc/vsftpd/chroot_list当上两个选项为YES时,就是白名单,当第一个为NO,第二个为YES就是黑名单
启用记录上传下载wu日志xferlog_enable=YES该为默认值
使用wu-ftp日志格式xferlog_std_format=YES该为默认值
设置日志文件xferlog_file=/var/log/xferlog该为默认值
最大并发连接数

max_client=0

每个ip同时发起的最大连接数max_per_ip=0
本地用户最大传输速率限制local_max_rate=0
匿名用户最大传输速率限制anon_max_rate=0
主动连接超时时长connect_timeout=60
被动连接超时时长accept_timeout=60
无数据连接超时时长data_connection_timeout=300
无命令连接超时时长idle_session_timeout=60

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值