【FTP】——文件传输协议

news2025/1/11 19:42:07

文章目录

  • 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   #设置匿名用户创建文件和目录的默认权限为755

 17 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.conf


chroot_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://www.coloradmin.cn/o/440505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】Linux基础

Linux基础 一、操作系统1、什么是操作系统2、Linux操作系统3、Linux系统目录,Linux倒挂树型目录结构:4、安装Xshell与Xftp5、Linux文件操作命令6、vim文本编辑器(1)vim三种模式(2)vim重要快捷键&#xff08…

Dell Inspiron 5570电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板Dell Inspiron 5570 处理器Intel(R) Core(TM) i7-8550U CPU 1.80GHz已驱动 内存8 GB 2400 MHz DDR4已驱动 硬盘samsung ssd 850 evo 250 go已驱…

汽车跨界还能这么玩?解锁汽车跨界新模式

跨界,是一种商业思维,是出圈方式,是进入流量红海的手段之一。近几年来,国内掀起了一股跨界风,“跨界增值宣传”似乎成为了品牌年轻化的必经之路,众多品牌通过跨界的方式实现互相补足、用户渗透,…

#Chrome扩展程序开发教程--01:基本概念介绍

#Chrome扩展程序开发教程--01:基本概念介绍 引言1、什么是扩展程序?2、Web技术3、Chrome 扩展程序API4、扩展程序架构 引言 本系列博客旨在带来最新的Chrome扩展程序开发入门教程。 1、什么是扩展程序? 通过向Chrome浏览器添加自定义特性和功…

Docker容器---网络、容器操作

Docker容器---网络、容器操作 一、docker实现原理二、docker网路模式1、Host模式2、container模式3、none模式4、bridge模式 三、自定义网络1、查看网络模式列表2、查看容器信息3、指定分配IP地址4、自定义网络固定IP 四、暴露端口五、容器端口映射1、创建端口映射 六、资源控制…

wordpress建站/demo

bidewang.co/ele 建站的另一种途径Sign in – My Account tanrenchang.atspace.cc 登录 ‹ Fashion trading platform — WordPress cPanel 是一个用于管理网站的虚拟主机控制面板。 使用 cPanel,可以轻松管理电子邮件帐户、数据库、FTP 用户以及与托管、设置和管…

windows10下使用minGW64 编译krita源码报错

系列文章目录 文章目录 系列文章目录前言一、错误原因二、使用步骤1.引入库 前言 collect2.exe: error: ld returned 1 exit status mingw32-make[2]: *** [plugins\color\lcms2engine\CMakeFiles\kritalcmsengine.dir\build.make:614: bin/kritalcmsengine.dll] Error 1 ming…

websever|2.19-2.27|信号概述-SIGCHILD信号

2.19信号概述 信号也是进程间通信的一种方式 其中1-31是操作系统定义的标准信号,比较重要。需要掌握其中几个。 34-64是预定义好的信号,是实时的信号 core文件中保存异常终止的一些信息。 在2.20节的开头,老师重点讲解了 的core文件。 进程出…

57 openEuler搭建Mariadb数据库服务器-管理数据库用户

文章目录 57 openEuler搭建Mariadb数据库服务器-管理数据库用户57.1 创建用户57.2 查看用户57.3 修改用户57.3.1 修改用户名57.3.2 修改用户示例57.3.3 修改用户密码57.3.4 修改用户密码示例 57.4 删除用户57.5 用户授权57.6 删除用户权限 57 openEuler搭建Mariadb数据库服务器…

集群聊天服务器项目(四)——项目总结

集群聊天服务器项目总结 首先是就是项目介绍集群聊天服务器项目(零)——项目介绍中的内容,就不再次copy过来了 项目简单介绍 技术栈 环境和库依赖 按模块介绍整个项目 程序的主要模块是网络模块、业务模块、数据模块、Json、redis发布订阅消息队列模块以及ngi…

Anaconda环境闭着眼睛安装tensorflow2.0-GPU

1.创建conda环境 conda create -n tf2 python3.7 2.进入conda环境 conda activate tf2 3.输入 nvidia-smi 查看有没有显卡驱动。(没有安一个,不管是windows/linux) 4. 安装cudatoolkit 和 cuDNN conda install cudatoolkit10.0 cudnn 5. 安装tensorflow pip ins…

【最佳实践】OAuth标准和基于OAuth2.0实现Github 授权单点登录的保姆级教程

【最佳实践】OAuth标准和基于OAuth2.0实现Github 授权单点登录的保姆级教程 第一章:OAuth基础知识1.1 OAuth起源1.2 OAuth简介1.3 OAuth的角色1.4 OAuth的授权流程1.5 OAuth的安全性1.6 OAuth标准的历史版本 第二章:OAuth2.0的工作原理2.1 OAuth2.0简介2…

前端--移动端布局--1移动web开发流式布局

目标: 能够知道移动web的开发现状 能够写出标准的viewport 能够使用移动web的调试方法 能够说出移动端常见的布局方案 能够描述流式布局 能够独立完成京东移动端首页 目录: 移动端基础 视口 二倍图 移动端调试 移动端技术解决方案 移动端常…

【全屏导航栏菜单】

提示&#xff1a;全屏导航栏菜单,炫酷的全局动画和导航切换动画 前言 提示&#xff1a;以下是本篇文章的代码内容,供大家参考,相互学习 一、html代码 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html; c…

浅尝GoWeb开发之Gin框架

一、框架简介 gin 目前应用最广泛的golang框架&#xff0c;甚至已经变成了golang的官方框架&#xff0c;但它主要是一个RESTFul的框架。封装比较优雅&#xff0c;API友好&#xff0c;源码注释比较明确。个人比较推荐。 beego 国内最早的golang框架&#xff0c;也是最全的MV…

opencv (二十二) 创建滑动条

滑动条(Trackbar)是OpenCV动态调节参数特别好用的一种工具,它依附于窗口存在。 创建滑动条:createTrackbar()函数 createTrackbar函数用于创建一个可以调整数值的滑动条(也称轨迹条),并将滑动条附加到指定的窗口上,它往往会和一个回调函数配合起来使用。 int createT…

你的GPT跟ChatGPT可能只差了一个DPU

“人类永远不会嫌网络太快&#xff0c;就像永远不会嫌高铁太快&#xff0c;你只会嫌它慢&#xff0c;希望它更快些。” 一个月内&#xff0c;百度、阿里、腾讯、商汤、讯飞、360等国内大厂扎堆发布“中国版 GPT ”&#xff0c;这家的名字还没记清楚&#xff0c;另一家的又蹦了出…

python逝练系列(终章)

目录 1、(最大数的出现)编写程序读取整数,找出它们中的最大值&#xff0c;然后计算它的出现次数。假设输入以数字0结束。假设你输入的是“352555 0";程序找出的最大数是5&#xff0c;而5的出现次数是4。(提示:维护两个变量max和 count。变量max存储的是当前最大数&#xf…

TypeScript自学文档

目录 1.什么是Ts? 1.1 设计公司&#xff1a;微软 1.2 TS概述 1.3 TS是静态类型 JS是动态类型 1.4 TS是强类型语言 JS是弱类型语言 2.TypeScript编译器 2.1 安装 2.2 TS自动编译和编译选项设置 3.TS的数据类型 3.1 基础数据类型number、string、boolean 3.2 Arrays&a…

【svn】如何批量忽略文件和文件夹

目录 一、通过svn:ignore 1、文件夹空白处右键 TortoiseSVN → Properties 打开 2、New → Other 3、global-ignores属性的值&#xff0c;即需要要忽略的文件 点击OK 4、取消忽略的文件 选中 Rmove &#xff0c;提交就可以看到idea文件了 二、svn:global-ignores 1、右键…