传输文件协议FTP与LFTP
目录
一.简介
二. FTP基础
主动模式(Active Mode):
被动模式(Passive Mode):
三. Vsftp 服务器简介
四. Vsftpd配置
1. 安装vsftpd(ftp服务端)
2.编辑配置文件 (ftp服务端)
3. FTP Clinet(lftp客户端)
4. FTP配置本地用户登录
4.1 创建 zhangsan、lisi 密码都设置为 “123456”
4.2 配置本地用户ftp配置文件
4.3在客户端操作(lftp)
一.简介
FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的标准协议。它允许用户通过网络连接到FTP服务器,并在客户端和服务器之间传输文件。
LFTP是一个基于命令行的FTP客户端程序,它是FTP的一个实现。与标准的FTP客户端相比,LFTP提供了更多的功能和灵活性,包括支持多个连接、断点续传、脚本编程等。
以下是FTP和LFTP之间的一些区别和特点:
-
功能和灵活性:
- FTP是标准的文件传输协议,提供基本的文件传输功能,但在功能和灵活性方面受到一些限制。
- LFTP是一个功能强大的FTP客户端程序,提供了许多高级功能,如多连接支持、断点续传、脚本编程等。它更适合于复杂的文件传输任务和自动化操作。
-
命令行界面:
- FTP客户端通常有图形用户界面(GUI)和命令行界面(CLI)两种版本。CLI版本通常使用命令行来执行文件传输操作。
- LFTP是一个纯命令行的FTP客户端程序,所有操作都通过命令行执行。
-
使用场景:
- FTP通常用于简单的文件传输任务,如上传和下载文件。
- LFTP更适用于复杂的文件传输需求,如需要同时传输多个文件或者需要使用脚本自动化文件传输操作的情况。
二. FTP基础
FTP Server
作用:提供文件共享服务,实现上传下载
端口:
21号,建立tcp连接 默认端口
20号:传输数据
软件包: vsftpd
FTP端口: 控制端口:21/tcp
配置文件: /etc/vsftpd/vsftpd.conf
FTP协议中的主动模式(Active Mode)和被动模式(Passive Mode)是用于建立数据连接的两种不同方式。在FTP传输过程中,除了控制连接(用于发送命令和响应)外,还需要建立数据连接来传输文件和目录列表等数据。主动模式和被动模式主要影响了数据连接的建立方式。
-
主动模式(Active Mode):
- 在主动模式中,FTP客户端向服务器的端口20发起连接,用于传输数据。
- 在数据传输之前,FTP客户端会向FTP服务器的端口20发送一个PORT命令,其中包含了客户端用于数据传输的IP地址和端口号。
- 服务器收到PORT命令后,会主动连接到客户端指定的IP地址和端口,然后进行数据传输。
-
被动模式(Passive Mode):
- 在被动模式中,FTP客户端向服务器的端口21发起连接,用于发送命令和控制连接。
- 在数据传输之前,FTP客户端会向FTP服务器发送一个PASV命令,服务器在一个范围的高端口中选择一个端口并将其通知给客户端。
- 客户端收到服务器返回的被动端口后,会建立一个新的数据连接,连接到服务器选择的端口上,然后进行数据传输。
主动模式和被动模式的区别在于数据连接的建立方式。在主动模式中,服务器主动连接到客户端指定的端口,而在被动模式中,客户端主动连接到服务器选择的端口。被动模式通常用于解决防火墙和网络地址转换(NAT)等环境下的问题,因为它可以减少对防火墙的配置要求。
三. Vsftp 服务器简介
vsftpd(Very Secure FTP Daemon)是一个开源的FTP服务器软件,它专注于安全性、性能和稳定性。vsftpd 服务器以其简单、轻量级和高性能而闻名,并且广泛用于Linux和Unix系统中。
以下是vsftpd服务器的一些特点和功能:
-
安全性:
- vsftpd致力于提供高级的安全功能,包括支持SSL/TLS加密、虚拟用户、限制用户访问权限等。
- 通过SSL/TLS加密传输,vsftpd可以提供数据的加密传输,防止数据在传输过程中被窃听或篡改。
-
性能:
- vsftpd被设计为高性能的FTP服务器,具有较低的内存消耗和高效的文件传输速度。
- 它支持异步I/O和多线程处理,能够处理大量的并发连接和高负载的FTP访问。
-
灵活性:
- vsftpd提供了丰富的配置选项,可以根据用户的需求进行灵活配置。
- 它支持用户和组的管理,允许管理员创建虚拟用户、限制用户的访问权限、限制用户的上传和下载速度等。
-
轻量级:
- vsftpd是一个轻量级的FTP服务器软件,它的代码简洁、清晰,并且运行稳定。
-
易于部署和管理:
- vsftpd易于安装、配置和管理,可以快速部署一个安全、高性能的FTP服务器。
- 它提供了丰富的文档和在线资源,以帮助管理员进行配置和管理。
四. Vsftpd配置
实验环境--准备两台机器,修改其主机名用来区分
#对192.168.226.100修改主机名
hostnamectl set-hostname ftp-server#对192.168.226.130修改主机名
hostnamectl set-hostname client
都关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1. 安装vsftpd(ftp服务端)
[root@ftp-server ~]# yum install -y vsftpd #下载
[root@ftp-server ~]# systemctl start vsftpd #启动
[root@ftp-server ~]# systemctl enable vsftpd #开机自启
FTP默认共享目录:/var/ftp
[root@ftp-server ~]# mkdir /var/ftp/upload #创建自己的共享目录
[root@ftp-server ~]# touch /var/ftp/upload/test.txt #创建文件到共享目录
[root@ftp-server ~]# cd /var/ftp/
[root@ftp-server ftp]# ls
pub upload#修改ftp目录下所有文件的属主与属组,当时ftp目录切记不能自己修改,只能修改ftp目录下的文件
[root@ftp-server ftp]# chown ftp.ftp * -R
[root@ftp-server ftp]# ll
总用量 0
drwxr-xr-x 2 ftp ftp 6 6月 10 2021 pub
drwxr-xr-x 2 ftp ftp 22 5月 14 14:53 upload
-
重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而默认的属主属组是root。
-
注意: - 修改完配置之后需要重启完服务才能生效
- 还需要从新从客户端登陆,否则修改后的配置看不到效果。
2.编辑配置文件 (ftp服务端)
#找到下面的这些配置选项,取消注释,如果每找到就新增即可,但开启的参数避免重复引发报错
[root@ftp-server ftp]# vi /etc/vsftpd/vsftpd.conf +29anon_umask=022 #添加匿名用户上传下载目录权限掩码,022 表示匿名用户上传的文件将会具有权限 rw-r--r--
anon_upload_enable=YES #这个选项用于允许匿名用户上传文件到FTP服务器
anon_mkdir_write_enable=YES #这个选项允许匿名用户在FTP服务器上创建目录(文件夹)
anno_other_write_enable=YES #这个选项用于允许其他用户对匿名用户上传的文件进行写操作

#重启服务
[root@ftp-server ftp]# systemctl restart vsftpd
3. FTP Clinet(lftp客户端)
注意关闭防火墙和selinux
[root@client ~]# yum -y install lftp #安装客户端1.get命令(下载,首先要开启下载功能[root@client ~]# lftp 192.168.226.100
lftp 192.168.226.100:~> ls
drwxr-xr-x 2 14 50 6 Jun 09 2021 pub
drwxr-xr-x 2 14 50 22 May 14 06:53 upload
lftp 192.168.226.100:/> cd upload/
lftp 192.168.226.100:/upload> ls
-rw-r--r-- 1 14 50 0 May 14 06:53 test.txt
lftp 192.168.226.100:/upload> get test.txt #下载
lftp 192.168.226.100:/upload> exit
[root@client ~]# ls #会下载到当前目录
anaconda-ks.cfg test.txt2.put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)[root@client ~]# touch /ceshi.txt #创建测试文件
[root@client ~]# mkdir /yut/ #创建测试目录
[root@client ~]# touch /yut/b.txt #在测试目录下面创建测试文件[root@client ~]# lftp 192.168.226.100
lftp 192.168.226.100:~> cd upload/
cd 成功, 当前目录=/upload
lftp 192.168.226.100:/upload> put /ceshi.txt #上传文件
lftp 192.168.226.100:/upload> ls
-rw------- 1 14 50 0 May 14 07:50 ceshi.txt
-rw-r--r-- 1 14 50 0 May 14 06:53 test.txt
lftp 192.168.226.100:/upload> mirror -R /yut/ #上传目录以及目录中的子文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
2 bytes transferred
lftp 192.168.226.100:/upload> ls
-rw-r--r-- 1 14 50 0 May 14 08:30 ceshi.txt
-rw-r--r-- 1 14 50 0 May 14 06:53 test.txt
drwxr-xr-x 2 14 50 19 May 14 08:43 yut
lftp 192.168.226.100:/upload> mkdir tty #创建文件夹
mkdir 成功, 建立 `ty'
lftp 192.168.226.100:/upload> rm ceshi.txt #删除ceshi.txt
rm 成功, 删除 `ceshi.txt'
lftp 192.168.226.100:/upload> ls
-rw-r--r-- 1 14 50 0 May 14 06:53 test.txt
drwxr-xr-x 2 14 50 6 May 14 08:28 tty
drwx------ 2 14 50 19 May 14 08:19 yut
lftp 192.168.226.100:/upload> mirror yut/ #下载目录
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
2 bytes transferred
lftp 192.168.226.100:/upload> exit #退出[root@client ~]# ll
总用量 4
-rw-------. 1 root root 1257 4月 30 23:34 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 5月 14 14:53 test.txt
drwxr-xr-x 2 root root 19 5月 14 16:45 yut
[root@client ~]# cd yut
[root@client yut]# ls
b.txt
4. FTP配置本地用户登录
4.1 创建 zhangsan、lisi 密码都设置为 “123456”
[root@ftp-server ~]# useradd zhangsan
[root@ftp-server ~]# useradd lisi
[root@ftp-server ~]# echo '123456' | passwd --stdin zhangsan
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@ftp-server ~]# echo '123456' | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
4.2 配置本地用户ftp配置文件
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf #对如下参数找到并进行添加注释并修改anonymous_enable=NO #将允许匿名登录关闭
#anon_umask=022 #匿名用户所上传文件的权限掩码
#anon_upload_enable=YES #允许匿名用户上传文件
#anon_mkdir_write_enable=YES #允许匿名用户创建目录
#anon_other_write_enable=YES #是否允许匿名用户有其他写入权(改名,删除,覆盖)
103 chroot_list_enable=YES #启用限制登陆用户在主目录里面
104 # (default follows)
105 chroot_list_file=/etc/vsftpd/chroot_list #限制登陆的用户在这个文件列表中,一行一个用户#需要添加的参数:
allow_writeable_chroot=YES #允许限制的用户对目录有写权限
local_root=/home/zhangsan # 设置本地用户的FTP根目录,一般为用户的家目录
local_max_rate=0 # 限制最大传输速率(字节/秒)0为无限制[root@ftp-server ~]# vim /etc/vsftpd/chroot_list #新增zhangsan
zhangsan
#重启服务
[root@ftp-server ~]# systemctl restart vsftpd
4.3在客户端操作(lftp)
[root@client ~]# lftp 192.168.226.100 -u zhangsan
口令:
lftp zhangsan@192.168.226.100:~> ls
lftp zhangsan@192.168.226.100:~> mkdir uuio
mkdir 成功, 建立 `uuio'
lftp zhangsan@192.168.226.100:~> mkdir tgh
mkdir 成功, 建立 `tgh'
lftp zhangsan@192.168.226.100:~> put /root/test.txt
lftp zhangsan@192.168.226.100:~> ls
-rw------- 1 1000 1000 0 May 14 09:25 test.txt
drwx------ 2 1000 1000 6 May 14 09:29 tgh
drwx------ 2 1000 1000 6 May 14 09:25 uuio
lftp zhangsan@192.168.226.100:~> rm -rf tgh
rm 成功, 删除 `tgh'
lftp zhangsan@192.168.226.100:~> ls
-rw------- 1 1000 1000 0 May 14 09:25 test.txt
drwx------ 2 1000 1000 6 May 14 09:29 uuio#现在切换回服务端查看有无刚刚在客户端上传和创建的文件
#服务器端查看[root@ftp-server ~]# cd /home/zhangsan/
[root@ftp-server zhangsan]# ll
总用量 0
-rw------- 1 zhangsan zhangsan 0 5月 14 17:25 test.txt
drwx------ 2 zhangsan zhangsan 6 5月 14 17:25 uuio
4.4 lftp常用命令总结
| get | 下载单个文件 |
| mget | 下载多个文件 |
| mirror | 下载目录 |
| put | 上传单个文件 |
| mput | 上传多个文件 |
| mirror -R | 上传目录 |
| mkdir | 创建目录 |
| rm -rf | 删除文件或者目录 |
相关文章:
传输文件协议FTP与LFTP
目录 一.简介 二. FTP基础 主动模式(Active Mode): 被动模式(Passive Mode): 三. Vsftp 服务器简介 四. Vsftpd配置 1. 安装vsftpd(ftp服务端) 2.编辑配置文件 (…...
expdp和impdp 实战
1 查询需要导出数据的用户 select username,default_tablespace from dba_users where username like %USERNAME%; 2 查看原来表空间大小 set linesize 9999 pagesize 9999 SELECT total.tablespace_name, Round(total.MB, 2) AS Total_MB, Round(t…...
知了汇智引领未来:全新AIGC系列课程,打造数字时代人才新标杆
在全球AIGC(生成式人工智能)技术加速发展的背景下,一系列权威报道揭示了该领域内市场潜力、行业应用、教育研究、政府监管以及具体应用场景的蓬勃进展。据腾讯网4月19日报道,中国AIGC应用市场规模预计于2024年达到200亿人民币&…...
软件项目验收第三方测试报告如何获取
软件项目验收第三方测试报告是确保软件质量、安全性和稳定性的重要环节。对于企业和开发者来说,获取一份全面、专业的第三方测试报告,对于提升软件产品的竞争力和用户满意度至关重要。本文将介绍如何获取软件项目验收第三方测试报告,以及相关…...
linux下脚本监控mysql主从同步异常时发邮件通知
在MySQL中,同步异常监控通常涉及监控复制的状态。可以通过查询SHOW SLAVE STATUS命令来获取复制的状态信息,并对其进行监控。以下是一个简单的SQL脚本,用于监控MySQL复制状态并输出异常信息: 查mysql slave状态 SHOW SLAVE STAT…...
【MySQL】分组排序取每组第一条数据
需求:MySQL根据某一个字段分组,然后组内排序,最后每组取排序后的第一条数据。 准备表: CREATE TABLE t_student_score (id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,stu_name varchar(32) NOT NULL COMMENT 学生姓名,course…...
滚珠螺杆在精密机械设备中如何维持精度要求?
滚珠螺杆在精密设备领域中的运用非常之广泛,具有精度高、效率高的特点。为了确保滚珠螺杆在生产设备中能够发挥最佳性能,我们必须从多个维度进行深入考量,并采取针对性的措施,以确保其稳定、精准地服务于现代化生产的每一个环节。…...
现代 c++ 三:右值引用与移动语义
c11 为了提高效率,引入了右值引用及移动语义,这个概念不太好理解,需要仔细研究一下,下文会一并讲讲左值、右值、左值引用、右值引用、const 引用、移动构造、移动赋值运行符 … 这些概念。 左值和右值 左值和右值是表达式的属性。…...
Java学习【类与对象—封装】
Java学习【类与对象—封装】 封装的概念封装的实现包的概念import 导包导包中*的介绍import static 导入包中的静态方法和字段 static关键字的使用static 修饰成员变量static修饰方法静态成员变量的初始化 代码块静态代码块非静态代码块/实例化代码块/构造代码块加载顺序 封装的…...
Co-Driver:基于 VLM 的自动驾驶助手,具有类人行为并能理解复杂的道路场景
24年5月来自俄罗斯莫斯科研究机构的论文“Co-driver: VLM-based Autonomous Driving Assistant with Human-like Behavior and Understanding for Complex Road Scenes”。 关于基于大语言模型的自动驾驶解决方案的最新研究,显示了规划和控制领域的前景。 然而&…...
硅胶可以镭射吗?
在科技发展的今天,我们经常会遇到各种各样的材料,其中就有一种叫做硅胶的材料。那么,硅胶可以镭射吗?答案是肯定的,硅胶不仅可以镭射,而且在某些应用中,它的镭射特性还非常突出。 首先ÿ…...
财务风险管理:背后真相及应对策略
市场经济蓬勃发展,机遇与风险并存也是市场经济的一项重要特征。而财务状况的好坏影响着一个企业的发展前景,作为市场经济的必然产物,财务风险贯穿于企业的一切生产经营活动中,无法预知也不以人的意志为转移。 一、企业财务风险的特…...
MySQL深入理解事务(详解)
事务概述 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。 1、基本概念 事务:一组…...
【Linux系统】进程控制
本篇博客整理了进程控制有关的创建、退出、等待、替换操作方面的知识,最终附有模拟实现命令行解释器shell来综合运用进程控制的知识,旨在帮助读者更好地理解进程与进程之间的交互,以及对开发有一个初步了解。 目录 一、进程创建 1.创建子进…...
Go语言数值类型教程
Go语言提供了丰富的数值类型,包括整数类型、浮点类型和复数类型。每种类型都有其特定的用途和存储范围。下面将详细介绍这些类型,并附带示例代码。 原文链接: Go语言数值类型教程 - 红客网-网络安全与渗透技术 1. 整数类型 原文链接…...
Linux进程控制——Linux进程等待
前言:接着前面进程终止,话不多说我们进入Linux进程等待的学习,如果你还不了解进程终止建议先了解: Linux进程终止 本篇主要内容: 什么是进程等待 为什么要进行进程等待 如何进程等待 进程等待 1. 进程等待的概念2. 进…...
GPT-4o:融合文本、音频和图像的全方位人机交互体验
引言: GPT-4o(“o”代表“omni”)的问世标志着人机交互领域的一次重要突破。它不仅接受文本、音频和图像的任意组合作为输入,还能生成文本、音频和图像输出的任意组合。这一全新的模型不仅在响应速度上达到了惊人的水平,在文本、音频和图像理解方面也表现出色,给人带来了…...
灵活的静态存储控制器 (FSMC)的介绍(STM32F4)
目录 概述 1 认识FSMC 1.1 应用介绍 1.2 FSMC的主要功能 1.2.1 FSMC用途 1.2.2 FSMC的功能 2 FSMC的框架结构 2.1 AHB 接口 2.1.1 AHB 接口的Fault 2.1.2 支持的存储器和事务 2.2 外部器件地址映射 3 地址映射 3.1 NOR/PSRAM地址映射 3.2 NAND/PC卡地址映射 概述…...
nginx-rtmp
1.已经安装nginx;configure配置模块;make编译无需安装;把objs/nginx复制到已安装的宁目录下 ./configure --prefix/usr/local/nginx --add-module/usr/local/src/fastdfs-nginx-module/src --add-module/usr/local/src/nginx-rtmp-module-mas…...
nginx 代理java 请求报502
情况:nginx代理java 请求 后端返回正常,但是经过nginx 时报502 经过多次对比其他接口发现可能是返回的请求头过大,导致nginx 报错:如下 2024/05/13 02:57:12 [error] 88#88: *3755 upstream sent too big header while reading r…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
CMS内容管理系统的设计与实现:多站点模式的实现
在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...
