FTP服务
大家好呀!这里是码农后端。今天来简单聊一聊FTP服务。FTP服务是基于FTP协议(即文件传输协议)的文件传输服务,应用非常广泛。
一、FTP服务概述
1、FTP概述
FTP(File Transfer Protocol)是一种应用非常广泛且古老的一个互联网文件传输协议。
文件传输:文件的上传与下载
- 主要用于互联网中文件的双向传输(上传/下载)、文件共享
- 跨平台 Linux、Windows
- FTP是C/S架构,拥有一个客户端和服务端,使用TCP协议作为底层传输协议,提供可靠的数据传输
- FTP的默认端口 21号(命令端口) 20号(数据端口,主动模式下) ,默认被动模式下
- FTP程序(软件):vsftpd
FTP软件名称 => vsftpd,vs(very secure ftp daemon) ,字面理解即非常安全的ftp服务
2、FTP服务的客户端工具
- Linux:ftp、lftp(客户端程序)
- Windows:FlashFXP(虚拟主机)、FileZilla、IE、Chrome、Firefox
- lftp和ftp工具区别:
- lftp:默认是以匿名用户访问
- ftp:默认是以用户名/密码方式访问
- lftp可以批量并且下载目录
3、FTP的两种运行模式
在FTP服务中,有主动模式和被动模式两种模式。两种模式都以FTP的服务器端作为参考点。
主动模式:FTP服务器端主动连接客户端。
被动模式:客户端主动连接FTP服务器端。
3.1 主动模式
实现原理:
1)客户端打开大于1023的随机命令端口和大于1023的随机数据端口,向服务端的21号端口发起请求
2)服务端的21号命令端口响应客户端的随机命令端口
3)服务端的20号端口主动请求连接客户端的随机数据端口
4)客户端的随机数据端口进行确认
cmd:命令端口(发送FTP请求)
data:数据端口(后期用于传输数据)
1024-5000:系统随机端口。
3.2 被动模式
实现原理:
1)客户端打开大于1023的随机命令端口和大于1023的随机数据端口,向服务端的21号端口发起请求
2)服务端的21号命令端口响应客户端的随机命令端口
3)客户端主动连接服务端打开的大于1023的随机数据端口
4)服务端进行确认
注:FTP默认使用的就是被动模式
4、搭建FTP服务(重点)
基本步骤:
1 | 1. 关闭防火墙和selinux |
1)关闭防火墙与SELinux
1 | # 关闭防火墙 |
2)配置YUM源
有网配置公网YUM源(腾讯、阿里、华为),无网就配置本地YUM源
1 | # 无网络,配置本地YUM源时,需要先挂载光盘 |
3)安装vsftpd软件(FTP => vsftpd)
1 | yum install vsftpd -y |
4)启动ftp服务并添加到开机启动项中
1 | systemctl start vsftpd |
5)测试FTP是否安装成功
1 | # 获取网卡IP地址(192.168.91.130) |
inet 192.168.91.130 netmask 255.255.255.0 broadcast 192.168.91.255
6)访问
a、基于浏览器的访问(ftp://192.168.91.130/)
只能查看,不支持上传
查看pub目录的位置:
b、基于Windows资源管理器的访问
在资源管理器中访问 ftp://192.168.91.130/
c、基于FlashFxp、FileZilla软件
d、基于ftp以及lftp命令进行连接(Linux与Linux之间的FTP文件传输)
1 | # 安装软件 |
5、FTP的配置文件详解(重点)
在Server服务器端,使用 rpm -ql vsftpd查询vsftpd生成的文件列表信息
1 | # 查询软件生成的文件信息 |
vsftpd配置文件详解:
1 | grep -v ^# /etc/vsftpd/vsftpd.conf |
表示获取 vsftpd.conf配置文件中不以#开头的行,在文件注释过多时方便我们查看需要的信息
选项说明:
注:^脱字节,^# 代表获取所有以#开头的行;-v表示取反或排除。
使用man命令查看帮助手册
1 | man 5 vsftpd.conf |
二、FTP任务解决方案
任务背景
搭建一个客户服务系统(主要涉及客服资料上传与下载),要求如下
1 | 1. 客服人员必须使用用户名密码(kefu/123)的方式登录服务器来下载相应文档 |
1、创建客服账号(Server服务器端)
1 | # 创建用户 |
2、不允许匿名用户访问
1 | # 进入主配置文件 |
在命令模式下(默认)输入 :set nu显示行号信息。
配置修改完毕后,一定要重启vsftpd服务,令其生效。
1 | systemctl restart vsftpd |
3、指定账号访问的目录
指定目录:
1 | # -p:一次创建多个层级的目录,先创建data目录 |
重启服务:
1 | systemctl restart vsftpd |
4、限定用户的目录活动范围
限定kefu用户只能在/data/kefu目录下活动
1 | # 进入主配置文件 |
配置修改完毕后,重启vsftpd服务
1 | systemctl restart vsftpd |