FTP协议和vsftpd详解
一、主要的存储技术对比
| 特性维度 | DAS (直连存储) | NAS (网络附加存储) | SAN (存储区域网络) |
|---|---|---|---|
| 核心架构 | 存储设备直接挂载在服务器内部总线或接口上。 | 一台独立的、带操作系统的文件服务器,通过标准以太网(TCP/IP)接入网络。 | 一个专用的、高速的存储网络,将多台服务器与存储设备(如磁盘阵列)连接起来。 |
| 连接与访问方式 | 点对点直连,如通过SCSI、SATA、SAS等接口。 | 使用文件级协议(NFS用于Linux/Unix, SMB/CIFS用于Windows)通过网络访问。 | 使用块级协议(SCSI),通过网络(光纤通道或以太网)传输,服务器识别为“本地硬盘”。 |
| 主要优势 | 1. 简单直接:部署、配置和管理最简单。 2. 成本最低:初期投资少。 3. 高性能:直连带来低延迟和高带宽。 | 1. 易共享:专为多客户端文件共享设计,跨平台。 2. 即插即用:部署简单,易于扩展容量。 3. 管理集中:有独立的操作系统,便于统一管理。 | 1. 极致性能:专网专用,提供高吞吐、低延迟的块级访问。 2. 高可用与扩展性:支持冗余路径、易于在线扩展,不影响服务器。 3. 集中与共享:存储资源池化,可在多服务器间高效、灵活地分配和共享。 |
| 主要缺点与挑战 | 1. 形成“存储孤岛”:存储资源无法在服务器间共享,利用率低。 2. 扩展性差:受服务器接口数量、带宽和空间限制。 3. 加重服务器负担:数据管理和备份占用服务器资源。 | 1. 性能瓶颈:吞吐量和延迟受限于前端网络(以太网)和NAS设备本身性能。 2. 不适合海量小文件:文件系统元数据管理可能成为瓶颈。 | 1. 复杂且昂贵:需要专用硬件(如光纤交换机、HBA卡)和专业知识,总体拥有成本高。 2. 部署复杂:设计、配置和维护都比DAS和NAS复杂得多。 |
二、FTP协议详细介绍
协议概述
ftp协议是工作在网络层(ISO第七层)的,用于计算机网络文件传输的标准协议,基于c/s模型,依赖于tcp协议。FTP的工作原理基于两个主要连接:控制连接和数据连接;拥有两种工作模式:主动模式、被动模式。
两种模式:从服务器角度
- 主动(PORT style):服务器主动连接
- 命令(控制):客户端:随机port ---> 服务器:21/tcp
- 数据:客户端:随机port <---服务器:20/tcp
- 被动(PASV style):客户端主动连接
- 命令(控制):客户端:随机port ---> 服务器:21/tcp
- 数据:客户端:随机port ---> 服务器:随机port /tcp
FTP用户解析
FTP 服务器(如 vsftpd)允许直接使用服务器操作系统中存在的用户账号(如 /etc/passwd 中的用户)进行登录
- 认证机制:用户输入的用户名和密码会被 FTP 服务传递给操作系统的身份验证模块(如 PAM),与系统登录流程一致。
- 权限继承:登录后,用户对文件和目录的操作权限与其在操作系统中的权限完全相同
FTP服务状态码:
1XX:信息
2XX:成功类状态
3XX:补充类
4XX:客户端错误
5XX:服务器错误
125:数据连接打开
200:命令OK
230:登录成功
331:用户名OK
425:不能打开数据连接
530:不能登录

二、vsftpd
1,主要的配置和相关的解析
【1】,主动模式和被动模式
##默认情况下linux系统使用被动模式,Windows系统使用的是主动模式。
#主动模式
port_enable=YES
connect_from_port_20=YES
#被动模式
connect_from_port_20=NO
port_enable=NO
pasv_enable=YES
#设置高端扣
pasv_max_port=10000
pasv_min_port=11100
【2】时间配置
#配置中国北京时间,而不是utc;如果是no会比中国北京时间晚8个小时,则文件的时间会给运维人员造成混乱
use_localtime=YES 使用当地时间(默认为NO,使用GMT)
【3】用户管理
#【用户登入】
#是否允许系统本地用户(即 /etc/passwd 文件中存在的用户)通过账号密码登入ftp
local_enable=YES
#是否允许本地用户上传文件
write_enable=YES
#用户上传文件的默认权限
local_umask=022
#设置管控用户登入的列表。
userlist_enable=YES
#当这个参数设置为YES的时候这个名单是黑名单,当设置为NO的时候为白名单
userlist_deny=YES
#管控用户登入的列表文件的位置
userlist_file=/etc/vsftpd/user_list
#【用户是否禁锢家目录黑白名单】
#禁锢所有系统用户只能呆在家目录中,默认NO,即不禁锢
chroot_local_user=YES
#设置一个用户名单
chroot_list_enable=yes
#名单文件的位置
chroot_list_file=/etc/vsftpd/chroot_list
#当 chroot_list_enable=yes 并且 chroot_local_user=YES 时,这个/etc/vsftpd/chroot_list文件是一个白名单。
#当 chroot_list_enable=yes 并且 chroot_local_user=NO时,这个/etc/vsftpd/chroot_list文件是一个黑名单。
##正常情况下,需要将所有用户禁锢在家目录中。故而,设置白名单,并且这个名单设置为空;方便程序上对于文件目录的准确获取,和安全保障。
【4】,日志管理
#设置wu-ftp日志,当然下面的配置都是默认值,不设置也是一样的。
xferlog_enable=yes
xferlog_std_format=yes
【5】,pam模块控制用户登入
#配置文件在 /etc/pam.d/vsftpd,这个会生成一个文件 /etc/vsftpd/ftpusers 默认文件中用户拒绝登录,默认是黑名单;但也可以是白名单,将sense=allow就可以了。
pam_service_name=vsftpd

【6】,匿名用户场景
- 匿名用户的核心特征是无需身份认证和权限高度受限,这决定了其典型的应用场景主要围绕公开数据的分发与收集。在设备固件分发的场景中,存在设备连接到分发网关,通过网关和ftp将设备的硬件版本分发下去进行升级。
#启用匿名用户
anonymous_enable=yes
#指定根目录将匿名用户进行隔离,默认的地址一般会是/var/ftp/
anon_root=/var/ftp
#允许匿名用户上传文件
anon_upload_enable=yes
#同意修改上传的文件用户;并且设定为一个专门的用户,便于管理
chown_uploads=YES
chown_username=ftp_owner
#设置默认的上传文件的读写权限
anon_umask=033
【7】,信息泄露保护
#登入ftp前,提示信息更改
ftpd_banner="welcome ftp server"
2,wu-ftp的日志格式解析
Sun Jan 11 07:54:37 2026 1 ::ffff:111.22.333.44 312 \
/YITIHUA_ZTE/VISZTE/response/2026/01/11/YITIHUA_ZTE20260111075225489757_11725935.xml \
b _ o r zjcollect ftp 0 * c
- Sun Jan 11 07:54:37 2026:本地服务器时间。
- 1:文件传输用的时间。
- ::ffff:111.22.333.44:用户客户端的地址。
- 312:文件的字节数,传输的文件大小。
- /YITIHUA_ZTE/VISZTE/response/2026/01/11/YITIHUA_ZTE20260111075225489757_11725935.xml:传输文件的完整路径。
- b:传输文件的格式。b-代表二进制文件;a-代表ASCII文本。
- _ :特殊的格式。如:_ 无格式,C 压缩,U 解压,T tar包处理。
- o:传输放向。o-表示客户端下载文件outputing,i-表示客户端上传文件incoming。
- r:用户模式。r-表示真实系统用户real,a-表示匿名用户anonymous,g-表示来宾用户guest。
- zjcollect :用户名。如果是匿名用户,通常是 ftp 或邮件地址。
- ftp:服务名。
- 0:认证方式。
- *:认证用户ID:认证用户的数字ID,* 表示未获取到。
- c:传输结果。c-表示传输完成complete ;i-表示传输中断incomplete 。
3,ftp常用的运维端命令
【1】,open
#链接远程ftp服务器端,查看文件的上传和下载的情况,或者验证服务和网络问题。
ftp> open 192.168.1.100
Connected to 192.168.1.100.
220 (vsFTPd 3.0.3)
Name (192.168.1.100:user): alice
331 Please specify the password.
Password:
230 Login successful.
【2】,cd/ls:基本和linux系统差不多
【3】,put/mput:上传文件。前者单个文件操作,后者可以多文件传输
#单个文件的上传
ftp> put local_file.txt
local: local_file.txt remote: local_file.txt
200 PORT command successful.
150 Ok to send data.
226 Transfer complete.
12345 bytes sent in 0.01 secs (1024.00 Kbytes/sec)
##多文件上传
ftp> mput *.txt
mput file1.txt? y
mput file2.txt? n
【4】,get/mget:下载文件。前者单个文件操作,后者可以多文件传输
#单个文件下载
ftp> get report.pdf
local: report.pdf remote: report.pdf
200 PORT command successful.
150 Opening BINARY mode data connection for report.pdf (12345 bytes).
226 Transfer complete.
12345 bytes received in 0.00 secs (2048.00 Kbytes/sec)
#多个文件下载
ftp> mget *.jpg
【5】,delete:删除文件
【6】,binary:启用二进制传输,在传输图片或者zip包之前执行这个命令可以传输二进制文件。
ftp> binary
ftp> put software.tar.gz
【7】,ascii:输纯文本文件前,执行 ascii 命令
【8】,!ls:查看本地服务器的目录
三,ftp和NAS的对比
| 对比维度 | FTP (文件传输协议) | NAS (网络附加存储) |
|---|---|---|
| 本质 | 传输协议:一个专门用于在网络中上传/下载文件的工具。 | 存储系统:一个完整的、提供网络文件访问服务的专用设备或服务器。 |
| 工作方式 | “下载-修改-上传”:客户端通常需要将文件完整下载到本地,修改后再上传回去。 | “在线访问”:客户端可以直接在远程存储上打开、编辑和保存文件,就像操作本地磁盘一样。 |
| 核心技术 | 运行在TCP/IP协议上,使用独立的控制连接(端口21)和数据连接(端口20)。 | 底层是TCP/IP,但上层使用NFS或SMB/CIFS这类文件共享协议。 |
| 典型场景 | 网站维护(上传网页文件)、软件分发、跨组织的大文件单向传递。 | 企业部门文件共享、项目协作、个人云存储、视频剪辑网络存储。 |
| 与存储架构的关系 | 可以运行在任何联网的存储系统上(如服务器本地硬盘/DAS,或NAS设备本身)。 | 一种专门的、集成了硬件和软件的文件存储架构,通常提供FTP作为其附加访问方式之一。 |

浙公网安备 33010602011771号