Linux FTP 协议讲解

目录

Linux FTP 协议详解

1. FTP 概述

2. FTP 作用和模式以及通信方式

2.1 FTP 的作用

2.2 FTP 的工作模式

2.3 FTP 的通信方式

3. FTP 的基本工作原理

4. 搭建和配置 FTP 服务

4.1 安装 vsftpd 服务

4.2 启动并设置开机自启动

4.3 配置匿名用户

4.4 用户模式登录


Linux FTP 协议详解

1. FTP 概述

FTP(File Transfer Protocol,文件传输协议)是一种基于 TCP/IP 协议族的应用层协议,诞生于 1971 年,旨在实现不同计算机之间的文件传输。它定义了客户端与服务器之间进行文件交互的标准规则,支持跨平台、跨网络的文件操作,是互联网早期最核心的协议之一。

2. FTP 作用和模式以及通信方式

2.1 FTP 的作用

跨网络文件传输:这是 FTP 最核心的功能,允许用户将本地文件上传至远程 FTP 服务器,或从远程服务器下载文件至本地,不受操作系统和网络类型的限制,例如 Windows 客户端可向 Linux FTP 服务器上传文件。

文件及目录管理:用户登录 FTP 服务器后,可执行多种文件管理操作,包括创建目录(mkdir)、删除目录(rmdir)、删除文件(delete)、重命名文件或目录(rename)、查看目录列表(ls)等,如同管理本地文件系统一样便捷。

权限控制与资源共享:FTP 服务器可对不同用户设置不同的访问权限,例如匿名用户仅能下载文件,而本地用户可上传、下载和管理文件。这种权限机制使得 FTP 适用于团队内部文件共享、公共资源发布等场景。

2.2 FTP 的工作模式

FTP 的工作模式主要分为主动模式(Active Mode)和被动模式(Passive Mode),两种模式的核心区别在于数据连接的建立方式不同。

主动模式:由 FTP 服务器主动向客户端发起数据连接。在该模式下,客户端首先通过随机端口与服务器的 21 号控制端口建立控制连接,然后客户端告知服务器自己用于接收数据的临时端口(通常大于 1024),服务器随后从 20 号数据端口向客户端的临时端口发起数据连接。

被动模式:由 FTP 客户端主动向服务器发起数据连接。客户端与服务器建立控制连接后,服务器会开启一个临时数据端口(通常大于 1024)并告知客户端,客户端收到后,从自己的临时端口向服务器的临时数据端口发起数据连接。

被动模式在实际应用中更为常见,尤其是当客户端位于防火墙或 NAT(网络地址转换)设备后方时,主动模式下服务器发起的连接可能被防火墙阻挡,而被动模式可避免这一问题。

2.3 FTP 的通信方式

控制连接:贯穿整个 FTP 会话的连接,用于传输客户端与服务器之间的命令和响应信息(如登录请求、操作指令、状态码等),默认使用服务器的 21 号端口。控制连接一旦建立,在会话结束前会保持打开状态。

数据连接:仅在传输文件或目录列表等数据时建立的临时连接,数据传输完成后即关闭。数据连接的端口和建立方式由 FTP 的工作模式决定(主动模式使用服务器 20 号端口,被动模式使用服务器临时端口)。

3. FTP 的基本工作原理

FTP 基于客户端 - 服务器(C/S)架构,其工作原理可概括为:客户端通过控制连接向服务器发送操作命令(如登录、上传、下载等),服务器解析命令后执行相应操作,并通过控制连接返回响应信息(如状态码、错误提示等);当需要传输数据(文件或目录列表)时,客户端与服务器根据工作模式建立数据连接,完成数据传输后关闭数据连接,而控制连接保持至会话结束。

4. 搭建和配置 FTP 服务

以 Linux 系统中最常用的 vsftpd 为例,介绍 FTP 服务的搭建和配置过程。

4.1 安装 vsftpd 服务

通过系统包管理工具安装 vsftpd,以 CentOS 为例,执行命令:yum install vsftpd -y

4.2 启动并设置开机自启动

安装完成后,启动 vsftpd 服务,执行:systemctl start vsftpd。同时设置开机自启动,CentOS 执行:systemctl enable vsftpd

4.3 配置匿名用户

vsftpd 的主配置文件为/etc/vsftpd/vsftpd.conf,可通过修改该文件进行基本配置:anonymous_enable=YES    #开启匿名用户访问。默认已开启
write_enable=YES    #开放服务器的写权限(若要上传,必须开启)。默认已开启


anon_umask=022    #设置匿名用户所上传数据的权限掩码(反掩码)。需要手动添加


anon_upload_enable=YES    #允许匿名用户.上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES   #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES    #允许删除、重命名、覆盖等操作。


然后设置 chmod 777 /var/ftp/pub/ 为匿名访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户上传数据

修改配置文件后,需重启 vsftpd 服务使配置生效,重启服务:systemctl restart vsftpd

在windows系统输入win+r,打开cmd窗口,建立ftp连接输入 ftp 10.0.0.251,用户名ftp,密码没有

这样就登入成功,我们就可以执行一些命令比如下载文件,输入cd pub进入pub目录,然后输入get qwe.txt,把qwe.txt文件传输到本地

我们也可以使用put 4444.txt把本地文件上传到ftp目录

4.4 用户模式登录

在 /etc/vsftpd/vsftpd. conf 里面进行以下设置
local_enable=Yes              #启用本地用户
anonymous_enable=NO          #关闭匿名用户访问
write_enable=YES              #开放服务器的写权限(若要上传,必须开启) 
local_umask=077               #可设置仅宿主用户拥有被上传的文件的权限(反掩码)


chroot_local_user=YES         #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES    #允许被限制的用户主目录具有写权限

完成后重启服务,然后打开Windows的cmd输入ftp 10.0.0.251进行登入,输入对应的用户名和密码就可以登入了(我的用户名是www),

完成之后就可以输入命令进行操作,上传的文件默认在用户的家目录,如果需要更改用户的家目录

则在/etc/vsftpd/vsftpd. conf里添加一行local_root=/opt/666(这里是要设置的家目录)

wq保存即可,然后添加权限,chmod 777 /ott/666

比如我上传4444.txt后,文件就会保存在/opt/666目录下

在vim /etc/vsftpd/user_list 可以把用户加入黑名单,只需要在末尾加上用户名称即可
但是要用user_list用户列表文件,要在 /etc/vsftpd/vsftpd.conf 把这行userlist_enable=YES 启用(默认打开) 
userlist_deny=NO  可以设置白名单,仅允许user_list用户列表文件的用户访问。默认为YES,为黑名单,禁用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值