传输文件协议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之间的一些区别和特点:

  1. 功能和灵活性

    • FTP是标准的文件传输协议,提供基本的文件传输功能,但在功能和灵活性方面受到一些限制。
    • LFTP是一个功能强大的FTP客户端程序,提供了许多高级功能,如多连接支持、断点续传、脚本编程等。它更适合于复杂的文件传输任务和自动化操作。
  2. 命令行界面

    • FTP客户端通常有图形用户界面(GUI)和命令行界面(CLI)两种版本。CLI版本通常使用命令行来执行文件传输操作。
    • LFTP是一个纯命令行的FTP客户端程序,所有操作都通过命令行执行。
  3. 使用场景

    • FTP通常用于简单的文件传输任务,如上传和下载文件。
    • LFTP更适用于复杂的文件传输需求,如需要同时传输多个文件或者需要使用脚本自动化文件传输操作的情况。

二. FTP基础

        FTP Server
        作用:提供文件共享服务,实现上传下载
        端口:
        21号,建立tcp连接  默认端口
        20号:传输数据

        软件包:        vsftpd
        FTP端口:       控制端口:21/tcp 
        配置文件:       /etc/vsftpd/vsftpd.conf

FTP协议中的主动模式(Active Mode)和被动模式(Passive Mode)是用于建立数据连接的两种不同方式。在FTP传输过程中,除了控制连接(用于发送命令和响应)外,还需要建立数据连接来传输文件和目录列表等数据。主动模式和被动模式主要影响了数据连接的建立方式。

  1. 主动模式(Active Mode)

    • 在主动模式中,FTP客户端向服务器的端口20发起连接,用于传输数据。
    • 在数据传输之前,FTP客户端会向FTP服务器的端口20发送一个PORT命令,其中包含了客户端用于数据传输的IP地址和端口号。
    • 服务器收到PORT命令后,会主动连接到客户端指定的IP地址和端口,然后进行数据传输。
  2. 被动模式(Passive Mode)

    • 在被动模式中,FTP客户端向服务器的端口21发起连接,用于发送命令和控制连接。
    • 在数据传输之前,FTP客户端会向FTP服务器发送一个PASV命令,服务器在一个范围的高端口中选择一个端口并将其通知给客户端。
    • 客户端收到服务器返回的被动端口后,会建立一个新的数据连接,连接到服务器选择的端口上,然后进行数据传输。

主动模式和被动模式的区别在于数据连接的建立方式。在主动模式中,服务器主动连接到客户端指定的端口,而在被动模式中,客户端主动连接到服务器选择的端口。被动模式通常用于解决防火墙和网络地址转换(NAT)等环境下的问题,因为它可以减少对防火墙的配置要求。

三. Vsftp 服务器简介

vsftpd(Very Secure FTP Daemon)是一个开源的FTP服务器软件,它专注于安全性、性能和稳定性。vsftpd 服务器以其简单、轻量级和高性能而闻名,并且广泛用于Linux和Unix系统中。

以下是vsftpd服务器的一些特点和功能:

  1. 安全性

    • vsftpd致力于提供高级的安全功能,包括支持SSL/TLS加密、虚拟用户、限制用户访问权限等。
    • 通过SSL/TLS加密传输,vsftpd可以提供数据的加密传输,防止数据在传输过程中被窃听或篡改。
  2. 性能

    • vsftpd被设计为高性能的FTP服务器,具有较低的内存消耗和高效的文件传输速度。
    • 它支持异步I/O和多线程处理,能够处理大量的并发连接和高负载的FTP访问。
  3. 灵活性

    • vsftpd提供了丰富的配置选项,可以根据用户的需求进行灵活配置。
    • 它支持用户和组的管理,允许管理员创建虚拟用户、限制用户的访问权限、限制用户的上传和下载速度等。
  4. 轻量级

    • vsftpd是一个轻量级的FTP服务器软件,它的代码简洁、清晰,并且运行稳定。
  5. 易于部署和管理

    • 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 +29

anon_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.txt



2.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删除文件或者目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624866.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频汇聚管理/安防监控系统EasyCVR如何开启和调用验证码登录接口?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视…

【补充】图神经网络前传——Node2vec

Node2Vec【图神经网络论文精读】_哔哩哔哩_bilibili 解决的问题:图嵌入 把每一个节点编码成一个d维的低维、稠密(不是one-hot)、连续(不是离散的,是实数->有助于保存更多的信息)向量,并且&a…

安装Tomcat

下载 Tomcat 软件包 前往 Apache Tomcat 官网:Apache Tomcat - Apache Tomcat 10 Software Downloads在网站上找到最新版本的 Tomcat,选择下载对应的压缩包(通常是 .zip 或 .tar.gz 格式)。下载完成后,解压缩到您选择的目录。 配…

【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手

文章目录 一、前言二、绘制效果三、ConstraintLayout 使用方法3.1 创建布局文件3.2 替换配置3.3 设置约束,步骤13.4 设置约束,步骤23.5 其他设置 四、结束 一、前言 在进行Android APP开发过程中,减少layout嵌套即可改善UI的绘制性能&#x…

考研数学|强化《660》+《880》这样刷,太丝滑了❗️

660题880题需要大概两个月才能做完 660题和880题都是很高质量的题集,所以做起来一点也不轻松。 每年都会有学生暑假两个月只做了一本660题的情况,因为题目实在是太难,有点做不下去的感觉。 不过不要担心,暑假就是刷题发现问题的…

一个小调整,竟然让交换机、路由器的CPU占用率降低了50%

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 在信息时代下,不仅仅在网络工程领域,高CPU占用率都是一个非常常见的问题,…

ESP32-S3+86盒线控器方案,含开发时问题技术解答

随着智能家居产品越来越多,线控器应用也加大,86盒线控器跟智能吹风机联动,跟中央空调联动,下面讲下ESP32-S386盒线控器方案在开发中遇到的问题。 一、ESP32-S386盒线控器方案: 1、无需网关,可以直接连家里…

Flutter 玩转动画 + 自定义View 实现积分或金币领取流程动画

一、效果图 二、主要涉及的知识点 AnimationController、Animation、FractionalTranslation 动画Api的运用CustomPainter 自定义View以及每个时机的把握 主要是写篇博客来记录一下这个功能的实现,具体代码就看源代码了,有疑问可以私信沟通 源代码下载…

【高阶数据结构】并查集 {并查集原理;并查集优化;并查集实现;并查集应用}

一、并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类…

Java的类和对象(一)—— 初始类和对象,this关键字,构造方法

前言 从这篇文章开始,我们就进入到了JavaSE的核心部分。这篇文章是Java类和对象的第一篇,主要介绍类和对象的概念,this关键字以及构造方法~~ 什么是类?什么是对象? 学过C语言的老铁们,可以类比struct自定义…

弹幕游戏-压力测试 Python-Locust模拟送礼物

Hey,读者们!今天给大家带来一个Python性能测试的新玩法——使用Locust模拟发送礼物。是不是听起来就很酷?😎 🎯目标 想象一下,在直播平台上,你希望测试某个直播间的礼物发送功能。那么&#x…

通义千问 1.5 -7B fine-tune验证

尝试对对中文数据进行finetune验证,测试模型的可优化方向。下面是代码的详细情况 代码实现 from datasets import load_dataset from transformers import (AutoModelForCausalLM,AutoTokenizer,BitsAndBytesConfig,HfArgumentParser,AutoTokenizer,TrainingArgum…

Spring学习①__Spring初识

Spring Spring初识一、框架二、Spring(春天)简介Spring官网Spring是什么?Spring介绍拓展 Spring初识 一、框架 ​框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。 JAVA框架可以分为三层: 表示层业务…

视频号小店,一个不用直播就可以变现的项目!创业首选!

大家好,我是电商小V 想要创业或者是想要利用视频号变现的小伙伴可以说是很多的,因为视频号这两年的流量是非常大的,甚至即将超越抖音的流量,因为视频号背靠腾讯平台,也是不缺少流量的,并且视频号的流量是可…

高扩展性便携式1553B总线测试仪,支持麒麟操作系统

手提式便携1553B总线测试仪,利用订制平台的PXIe扩展槽嵌入石竹科技自主研发的高性能T系列专用1553B测试板卡和高级协议分析和测试软件FP-1553B Pro、FP-5186集成的一款模块化、功能可订制的测试仪器。 基本配置可对1553B信号进行波形采集(提供软件示波器…

如何实现数字化校园的高效运维

随着科技开展,国家大力支持各级各类学校建造数字化学校,综合利用互联网、大数据、人工智能和虚拟现实技能探究未来教育教育新模式。因为数字化学校的快速开展,学校网内设备类型很多,网络拓扑杂乱,信息运用繁复。各部门…

电机控制杂谈——“双采样双更新模式”对模型预测控制/PI控制的提升有多大?

1.采样频率与PWM开关频率的关系 一般有以下两种采样模式。 如下图(a)所示,这种方式称之为单采单更模式,即在一个PWM周期内,采样一次,更新一次PWM占空比,在这种情况下,采样频率&…

ICode国际青少年编程竞赛- Python-5级训练场-综合练习5

ICode国际青少年编程竞赛- Python-5级训练场-综合练习5 1、 a 16 for i in range(6):Dev.step(1)Dev.turnLeft()Dev.step(a)Dev.step(-a)Dev.turnRight()while Dev.energy < 100:wait()Dev.step(1)a a - 5 i2、 for i in range(5):Dev.step(11 - i * 2)Dev.turnRight()wh…

PBR系列-光之简史

作者&#xff1a;游梦 ​ 欢迎进入官网体验使用&#xff1a;Mapmost——让人与机器联合创作成为新常态 ​说到PBR理论分为三大理论&#xff1a;物理光源、物理材质与物理相机&#xff0c;三者都与光有着千丝万缕的关系&#xff0c;原打算这期讲解物理材质&#xff0c;在梳理知…

刚刚OpenAI发布ChatGPT-4o模型,免费使用GPT4o并免费提供更多功能

就在今日凌晨1点&#xff0c;OpenAI举行了春季发布会&#xff0c;发布了GPT-4o 并免费提供更多功能。 亲测GPT-4o已经可以免费试用&#xff0c;每个人都可以使用它并从中受益&#xff0c;GPT4终于不再是少部分人的玩物。 点击加入ChatGPT4交流群&#xff1a;https://www.aijour…