【FTP】——文件传输协议

article/2025/8/18 14:50:58

文章目录

  • 1.FTP简介
    • 1.1 FTP概述
    • 1.2 FTP主动模式
    • 1.3 FTP被动模式
  • 2. 实例:匿名用户访问FTP服务
  • 3. 实例:本地用户访问FTP服务

1.FTP简介

1.1 FTP概述

FTP服务——用来传输文件的协议。
在这里插入图片描述

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信.

20端口用于建立数据连接,并传输文件数据.

21端口用于建立控制连接,并传输FTP控制命令.

在这里插入图片描述

FTP数据连接分为主动模式和被动模式

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

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

在这里插入图片描述

1.2 FTP主动模式

主动模式:客户端给服务端的21控制端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会连接客户端已打开的那个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件
在这里插入图片描述

1.3 FTP被动模式

被动模式:客户端给服务器端的21端口发命令说,我要下载什么什么,服务端知道后,就打开一个空闲的端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧。于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西

在这里插入图片描述

2. 实例:匿名用户访问FTP服务

(1)设置匿名用户能够下载和上传文件的命令配置;

[root@clr ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
tmpfs           394M   28K  394M    1% /run/user/0
/dev/sr0        4.4G  4.4G     0  100% /mnt    #查看光盘镜像文件是否已经挂载成功
[root@clr /etc/yum.repos.d]# yum install -y vsftpd   #安装vsftpd服务
已加载插件:fastestmirror, langpacks
已安装:vsftpd.x86_64 0:3.0.2-28.el7                                                          
完毕!
[root@clr /etc/yum.repos.d]# rpm -qc vsftpd  #查看vsftpd安装包配置文件所在的位置
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf    #vsftpd的配置文件[root@clr /etc/yum.repos.d]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# cp vsftpd.conf{,.bak}   #先将vsftpd的配置文件备份下来
[root@clr /etc/vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf  #修改vsftpd的配置文件12 anonymous_enable=YES   #开启匿名用户访问13 anon_umask=022   #设置匿名用户创建文件和目录的默认权限为75517 local_enable=YES    #开启本地用户访问20 write_enable=YES   #为匿名用户开放服务器的写权限24 local_umask=022   #本地用户对文件和目录权限30 anon_upload_enable=YES  #取消注释,允许匿名用户上传文件34 anon_mkdir_write_enable=YES    #允许匿名用户创建和上传目录35 anon_other_write_enable=YES    #开启其他权限,允许匿名用户删除、重命名、覆盖等操作[root@clr /etc/vsftpd]# cd /var/
[root@clr /var]# ls
account  cache  db     ftp  gopher    lib    lock  mail   nis  preserve  spool   tmp
adm      crash  empty  games  kerberos  local  log   named  opt  run       target  yp
[root@clr /var]# cd ftp/
[root@clr /var/ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 1014 2020 pub  #默认权限为755,只允许超级用户root具有写入修改权限[root@clr /var/ftp]# mkdir gzy
[root@clr /var/ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 419 22:27 gzy
drwxr-xr-x. 2 root root 6 1014 2020 pub
[root@clr /var/ftp]# chmod 777 gzy/    #修改gzy目录为所有用户可读可修改权限
[root@clr /var/ftp]# ll
总用量 0
drwxrwxrwx. 2 root root 6 419 22:27 gzy  #允许匿名用户在gzy目录中进行写入和修改权限
drwxr-xr-x. 2 root root 6 1014 2020 pub[root@clr ~]# systemctl start vsftpd  #开启ftp服务
[root@clr ~]# systemctl enable vsftpd  #将ftp服务设置为开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.[root@clr ~]# netstat -lntp | grep :21   #查看ftp的21号端口状态,是否已经打开
tcp6       0      0 :::21                   :::*                    LISTEN      11577/vsftpd        
[root@clr ~]# cd /var/ftp/
[root@clr /var/ftp]# ls
gzy  pub
[root@clr /var/ftp]# cd gzy/
[root@clr /var/ftp/gzy]# echo 'helloworld' > 123.txt   #向gzy/目录中的123.txt文件中写入helloworld
[root@clr /var/ftp/gzy]# ls
123.txt
[root@clr /var/ftp/gzy]# cat 123.txt
helloworld
[root@clr /var/ftp/gzy]# cp /etc/passwd ./passwd.txt  #将/etc/passwd文件复制到当前目录下中,并重命名为passwd.txt
[root@clr /var/ftp/gzy]# ls
123.txt  passwd.txt

(2)客户端WIN10验证连接FTP服务器的结果;

切记一定要关闭防火墙,防止影响实验结果;

在这里插入图片描述

匿名用户连接FTP服务器;

在这里插入图片描述

匿名用户连接FTP服务器下载文件的情况;

在这里插入图片描述

匿名用户切换到桌面,并从桌面上传文件和下载文件到桌面的情况;

在这里插入图片描述

在这里插入图片描述

3. 实例:本地用户访问FTP服务

(1) 设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录);

[root@clr /var/ftp]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# cp vsftpd.conf vsftpd.conf.bak.local  #备份vsftpd.conf的配置文件,养成备份的好习惯
[root@clr /etc/vsftpd]# vim vsftpd.conf
anonymous_enable=NO     #关闭匿名用户访问,只要禁止匿名用户登录后,那么匿名用户的其他所有选项都不生效
local_enable=YES   #允许本地用户登录
# Uncomment this to enable any form of FTP write command.
write_enable=YES   #开放服务器的写权限,允许本地用户上传文件
local_umask=077    #设置仅属主用户拥有被上传文件的权限(反掩码)   

(2)创建本地用户,并重启ftp服务;

[root@clr /etc/vsftpd]# useradd clr   #创建本地用户clr
[root@clr /etc/vsftpd]# useradd gzy    #创建本地用户cgzy
[root@clr /etc/vsftpd]# echo '123456' | passwd --stdin clr
更改用户 clr 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@clr /etc/vsftpd]# echo '123123' | passwd --stdin gzy
更改用户 gzy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@clr /etc/vsftpd]# systemctl restart vsftpd  #重新启动ftp服务

在这里插入图片描述

本地用户从自己家目录中下载文件到当前目录中的情况;

在这里插入图片描述
在这里插入图片描述

(3)将本地用户禁锢在宿主家目录中,不允许访问和切换到其他目录;

[root@clr /var/named]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers   vsftpd.conf      vsftpd.conf.bak.local
user_list  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf  #修改/etc/vsftpd/vsftpd.conf配置文件
chroot_local_user=YES    #将访问禁锢在本地用户的宿主目录中
allow_writeable_chroot=YES   #允许被限制的用户主目录具有写权限
[root@clr /etc/vsftpd]# systemctl restart vsftpd  #重新启动vsftp服务器

在这里插入图片描述

(4)修改用户登录的默认根目录;

[root@clr ~]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers   vsftpd.conf      vsftpd.conf.bak.local
user_list  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.confchroot_local_user=YES
allow_writeable_chroot=YES
anon_root=/opt/    #修改匿名用户所在的目录位置为/opt/
local_root=/var/local_cge/html      #修改本地用户所在的目录位置为/var/local_cge/html[root@clr /opt]# chmod -R 777 /var/    #切记修改本地用户所在的目录的权限修改为777
[root@clr /opt]# chmod 555 /opt/    #切记修改匿名用户所在的目录的权限修改为555

在这里插入图片描述

(5) 使用user_list用户列表文件,设置白名单和黑名单,仅允许部分用户登录;


[root@clr /opt]# vim /etc/vsftpd/user_list   #修改并编辑user_list用户列表文件
root
bin
games
nobody
clr   #将本地普通用户加入到列表文件中[root@clr /opt]# vim /etc/vsftpd/vsftpd.conf   #修改ftp的配置文件
pam_service_name=vsftpd 
userlist_enable=YES     #启用user_list用户列表文件,用户列表中存在的用户将无法通过ftp服务器连接到系统,列表中之外的用户可以登录到系统
userlist_deny=NO   #该阈值默认为YES,也就是设置黑名单,表示user_list用户表列表中存在的用户名无法登录; 当该阈值设置为NO时,也就是设置白名单,表示仅允许user_list用户表列表中存在的用户登录到系统; 
tcp_wrappers=YES

在这里插入图片描述

客户端在图形界面中,连接FTP服务器的情况;

在这里插入图片描述

直接将FTP服务器中的文件拖到桌面,即可进行文件的下载;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/d5x4OGRb.shtml

相关文章

FTP协议使用

FTP协议大家都知道是文件传输协议,那这个协议到底是怎么样的呢,怎么用C语言是实现一个客户端呢? 我想通过这篇文章你能够理解FTP协议。 1-首先我们先了解一下FTP的工作流程 FTP分为 FTP服务器,FTP客户端,一般我们只…

FTP协议分析

一、实验名称 FTP协议分析 二、实验目标 1、理解FTP协议的工作原理; 2、了解FTP协议的常用命令; 3、了解应用层协议与传输层协议的关系 三、实验原理 FTP(File Transfer Protocal),是文件传输协议的简称。FTP使…

FTP 文件传输协议

FTP: 使用FTP进行文件传输时,会使用两个TCP连接。第一个连接是FTP客户端和FTP服务器间的控制连接。FTP服务器开启21号端口,等待FTP客户端发送连接请求。FTP客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器…

在互联网上传输文件 —— FTP协议

文章目录 FTP协议是什么FTP协议传输过程FTP命令和回答参考文献 FTP协议是什么 FTP(File Transfer Protocol,文件传输协议) 是TCP/IP 协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。…

文件传输协议(FTP)

因特网上使用的最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存储权限。它屏蔽了各个计算系统的细节,因而适合于在异构网络中的任意计算机之间传输文件。 FTP提供以下功能: 提供不同种…

FTP协议完全详解

1. 介绍 FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。虽然我们也可以手工使用它,但是它的主要作用是供程序使用的。在阅读本文之前最好能够阅读TCP协议标准规范和Telnet协议标准规范。…

FTP协议(文件传输协议)

FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序&am…

FTP文件传输协议详解

简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器。 需要通过控制连接20端口来控制双方的通信 需要通过数据连接21端口来进行双方的通信 主动模式:最大的特点是数据连接由服务器的20端口主动发起连接,这种情况可能会被客户端的防火墙拒绝…

FTP协议讲解

FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。 在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命…

FTP 协议

FTP 协议 FTP协议的(file Transfer Protocol)文本传输协议,简称为FTP, **FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,**采用的是c/s模式 也就是客户端和服务器…

浅谈FTP(文件传输协议)

FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议。是基于TCP协议的应用层协议,用于在网络上传输文件。 该协议使用的端口号为20和21,其中20是数据端口,21是命令端口(默认情况下) 是否使用…

FTP协议

一、FTP的概述 1、文件传送协议FTP (File Transfer Protocol)是互联网上使用得最广泛的文件传送协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。 3、FTP 屏蔽了…

FTP文件传输协议

目录 一、FTP的概述 1.1 FTP的理念 1.2 FTP数据连接模式 1.2.1 连接模式分类 1.2.2 主动和被动模式的工作原理 二、配置FTP服务 2.1 配置匿名用户FTP服务 2.1.1 关闭防火墙安装vsftpd软件包 2.1.2 开启FTP服务并做备份 ​ 2.1.3 修改配置文件 2.1.4 设置目录下权限&a…

FTP协议详解

一、FTP协议的概述 1、文件传送协议(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。 3、FTP屏蔽了各…

手推向量投影长度、投影向量

投影 (tuyǐng),数学术语,指图形的影子投到一个面或一条线上。 声明向量F为F、 向量F的大小为|F|,向量b为b、向量b的大小为、|b| 当我们得到了投影的大小之后|F| 因为 F 在 b 上 所以 单位向量相同,F 和 b…

向量投影公式

公式一:a.b |a||b|cos(r) cos(r) a.b/|a|/|b| 公式二:|c| |a|cos(r) 公式三:|c| a.b/|b| 公式四:c b/|b| |c| 公式五:c a.b/|b|2 b 公式六:c a.b/b.b b 备注:|b| √b.b 朝向解P…

已知法向量,某一向量投影到其平面,计算投影向量

最近一直在计算旋转矩阵,奈何高中数学实在是差,大学高等数学也不行,线性代数也不行,现在做起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。 第一个:对某一向量进行旋转平移,等于是在其左边乘了…

向量投影推导

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…

向量投影

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…